UNIVERSIDAD COMPLUTENSE DE MADRID FACULTAD DE MEDICINA © Diego Urgelés Puértolas, 2021 TESIS DOCTORAL Predicción del estado afectivo en el trastorno bipolar MEMORIA PARA OPTAR AL GRADO DE DOCTOR PRESENTADA POR Diego Urgelés Puértolas DIRECTORES Tomás Palomo Álvarez Victoria López López Guillermo Ponce Alfaro Madrid UNIVERSIDAD COMPLUTENSE DE MADRID FACULTAD DE MEDICINA TESIS DOCTORAL PREDICCIÓN DEL ESTADO AFECTIVO EN EL TRASTORNO BIPOLAR MEMORIA PARA OPTAR AL GRADO DE DOCTOR PRESENTADA POR Diego Urgelés Puértolas DIRECTORES Dr. Tomás Palomo Álvarez Dra. Victoria López López Dr. Guillermo Ponce Alfaro Agradecimientos A Tomas, Victoria y Guillermo, mis directores de tesis, a todos los profesores que he tenido y a todas las personas que me han enseñado algo en la vida, en especial a mis padres y a mi familia, de quienes he aprendido lo más importante. Given that about 10% of patients with bipolar illness have creative and leadership achievements, sophisticated clinical management of bipolar illness can potentially safeguard the adaptive capacity and contributions that gifted bipolar people provide to society. Agop. S. Akiskal Índice Resumen 1 Abstract 4 1. Introducción 6 2. Fundamentos 11 2.1 Trastorno bipolar, estado de ánimo y actividad 11 2.2 Manía, actividad e hipótesis de la primacía de la manía 13 2.3 Ritmo circadiano y trastorno bipolar 17 2.4 Sueño y trastorno bipolar 18 2.5 Implicaciones para un modelo dinámico de la enfermedad 21 2.6 Características deseables en las variables predictoras 22 2.7 Variables predictoras en el trastorno bipolar 25 2.8 Modelos del trastorno bipolar 34 2.9 Aprendizaje automático 36 3. Objetivos e hipótesis 38 4. Estudio A: evaluación de las variables predictoras de la manía 40 4.1 Metodología del estudio A 40 4.2 Resultados del estudio A 53 5. Estudio B: análisis exploratorio de diferentes estrategias predictivas 61 5.1 Metodología del estudio B 61 5.2 Resultados del estudio B 79 6. Discusión 85 6.1 Sobre las variables 85 6.2 Planteamiento del modelo 96 7. Conclusiones y trabajo futuro 107 Resumen Predicción de crisis en el trastorno bipolar Introducción El trastorno bipolar es una enfermedad crónica que afecta al estado de ánimo, la actividad y el sueño, con una incidencia relativamente alta en la población. Actualmente su abordaje tiene tasas de efectividad mejorables y supone un importante problema sanitario. Una de las posibles mejorías en su tratamiento sería poder predecir la aparición de crisis modelando el estado afectivo. Esto nos permitiría tratar precozmente los síntomas y minimizar sus consecuencias. Para avanzar en el desarrollo de un modelo del estado afectivo en el trastorno bipolar hemos tomado como base algunas ideas teóricas como son el carácter dinámico de esta enfermedad, la hipótesis de la primacía de la manía y la influencia del ritmo circadiano y el sueño. Hipótesis y objetivos La hipótesis a validar es que es posible predecir la aparición de sintomatología maníaca mediante análisis de variables clínicas previas. Para ello hemos diseñado dos estudios con diferentes objetivos: El estudio A tiene como objetivo analizar y estudiar diferentes variables clínicas recogidas mediante autoinformes que podrían servir como base de un modelo predictivo. El estudio B tiene como objetivo aplicar diferentes algoritmos de aprendizaje automático sobre subgrupos de las variables analizadas en el estudio A, midiendo su capacidad predictiva real. 1 Metodología Hemos recogido datos de 25 pacientes con trastorno bipolar que asisten a una unidad especializada durante 6 meses. Se han recolectado un total de 15 variables mediante autoinformes diarios a través del teléfono móvil, sumando un total de 3190 formularios. También se han realizado diferentes mediciones de la sintomatología maníaca mediante la escala de manía de Young (YMRS). En el estudio A se ha calculado la correlación lineal de las variables de estos formularios con el valor de YMRS, también se ha calculado la entropía de Shannon que contiene cada una de ellas. En el estudio B se han seleccionado distintos subgrupos de las variables recogidas en el estudio A, según las diferentes correlaciones y/o entropías que presentaban. Estos subgrupos han sido procesados por diferentes algoritmos clasificadores de aprendizaje automático con el fin de intentar predecir si a la semana de su recogida se iba a superar o no un determinado umbral de YMRS. Resultados En el estudio A se ha encontrado una correlación significativa entre el valor de YMRS y las variables ánimo, ansiedad, calidad de sueño, concentración, hora de dormir, duración del sueño, hora del test, irritabilidad, motivación y tabaco, pertenecientes al formulario diario. También se ha medido la entropía de Shannon de las diferentes variables. Estas dos medidas han dado lugar a un ranking que nos puede servir para clasificar la utilidad predictiva de estas variables. En el estudio B se ha usado el ranking de utilidad predictiva para generar varios subgrupos de variables. El subgrupo de variables con más potencial predictivo medio ha sido el G4a, que recoge las variables irritabilidad max, dormir max, duración max, ánimo max, horatest media, dormir media, calidad media, irritabilidad media, irritabilidad sd y ansiedad sd. Después se han aplicado diferentes algoritmos, siendo los más exitosos en la predicción las redes neuronales con retropropagación, KNN, Rpart y SVM, todo ellos clasificadores no lineales. 2 Conclusiones Es posible modelar la evolución de la sintomatología maníaca mediante aprendizaje automático, tomando como partida las variables recogidas mediante autoinformes con al menos una semana de antelación. Nuestra estrategia de reducir el número de variables, clasificándolas según su correlación con la variable a predecir, realizando después un análisis mediante estadísticos derivados que recogen la dimensión temporal es efectiva. Los algoritmos predictivos más interesantes son los clasificadores no lineales, destacando entre ellos las redes neuronales artificiales. 3 Abstract Prediction of crisis in bipolar disorder Introduction Bipolar disorder is a chronic disease that affects activity and sleep, with a relatively high incidence in the population. Currently its approach has low effectiveness rates, making this disease a major public health problem. One of the improvements in its treatment would be to predict the onset of crisis. This would allow us to treat the symptoms early and minimize their consequences. Our intention is the advance in the development of a model of the affective state in bipolar disorder. For this purpose, we have taken as a base some theoretical ideas such the dynamic nature of this disease, the hypothesis of the primacy of mania and the influence of circadian rhythm and sleep in bipolar disorder. Hypothesis and objectives The hypothesis to be tested is the possibility of forecasting the appearance of manic symptoms through the analysis of preceding clinical variables. For this purpose, we have designed two studies with distinct objectives. Study A aims to analyze and study different clinical variables collected through self-reports that could serve as the basis of a predictive model. Study B seeks to apply different automatic learning algorithms to subgroups of the variables analyzed in study A, measuring their real predictive power. Methodology We have collected data for 6 months from 25 patients with bipolar disorder who are attending in a specialized unit. A total of 15 variables have been collected through daily self-reports via cell phone, for a total of 3190 forms. In addition, we have made measurements of the manic symptomatology using the Young's scale (YMRS). 4 In study A, we have calculated the linear correlation of the variables of these forms with the YMRS value as well as the Shannon entropy contained in each of them. In study B we have selected different subgroups of the variables collected in study A, according to the different correlations and/or entropies they presented. These subgroups have been processed by different automatic learning classification algorithms in order to predict whether a certain threshold of YMRS would be exceeded a week after data collection. Results In study A there is a significant correlation between the value of YMRS and the variables mood, anxiety, sleep quality, concentration, bedtime, sleep duration, test time, irritability, motivation and smoking, which belong to the daily form. We have also determined the Shannon entropy of the different variables. These two measures have given rise to a ranking that can be used to classify the predictive usefulness of these variables. In study B the predictive utility ranking has been used to generate several subgroups of variables. The subgroup of variables with the highest average predictive potential is G4a, which includes the variables max irritability, max sleep, max duration, max mood, average test hour, average sleep, average quality, average irritability, standard deviation irritability and standard deviation anxiety. Afterwards, different algorithms have been applied, being the most successful in the prediction the neuronal networks with retropropagation, KNN, Rpart and SVM, all of them non-linear classifiers. Conclusions The conclusions of this study are: It is possible to model the evolution of manic symptomatology through automatic learning, taking as a starting point the variables collected through self- reports at least one week in advance. Our strategy of reducing the number of variables, classifying them according to their correlation with the variable to predict, carrying out later an analysis by means of derived statistics that gather the temporal dimension is effective. The most interesting predictive algorithms are the non-linear classifiers, particularly the artificial neural networks. 5 1. Introducción Ayudar a que nuestros pacientes desarrollen una vida plena a pesar de la enfermedad es una de las tareas principales de cualquier médico. Por desgracia en muchas personas que padecen trastorno bipolar (TB) se trata de un objetivo difícil. A pesar de que el TB es un problema frecuente, conocido desde hace siglos y con un alto impacto personal y social, seguimos sin poder dar una solución adecuada a todas las personas que lo sufren. Con este trabajo, se pretende avanzar en el conocimiento de esta enfermedad, en concreto en su dinámica, que consideramos un elemento fundamental de la misma. Pretendemos explorar las variables que gobiernan la aparición de las crisis y empeoramientos del TB a lo largo del tiempo, analizando sus características y su utilidad para diseñar un modelo preliminar de la dinámica de los cambios afectivos en esta enfermedad. Magnitud de la enfermedad El TB es una enfermedad crónica, heredable y recurrente que afecta al estado de ánimo, la actividad y el sueño. Agrupa un conjunto de síndromes (manía, hipomanía, depresión y estados mixtos) que se suceden temporalmente con diferentes patrones de una forma compleja y heterogénea. Asocia una alta comorbilidad con otros trastornos mentales como las adicciones o los trastornos de ansiedad. Puede dividirse en diferentes subtipos, existiendo varios sistemas de clasificación que coinciden parcialmente entre sí. Entre los subtipos más ampliamente reconocidos están el TB tipo I , el TB tipo II y la ciclotimia, aunque se han descritos tipos intermedios entre estos. Algunos investigadores abogan por el concepto de espectro bipolar, que agruparía dimensionalmente todos estos subtipos, ampliando además la frontera del concepto de TB en un continuo que terminaría solapándose con la normalidad (Goodwin, 2007; Joyce, 2008; APA, 2013; WHO, 2019). La incidencia del TB a lo largo de la vida según los estudios oscila entre un 4.4% en Estados Unidos, la más alta, hasta cifras de sólo 0.1%, descritas en la India (Merikangas, 2011). En Europa se estima que la incidencia del TB tipo I es de 6 scrivlnk://60CC6283-E6DD-4D23-B2B8-8FA90075CD7A alrededor del 1%. Los datos para el TB tipo II son menos consistentes, con cifras entre un 0.2% y un 3% (Pini, 2005). Podemos encontrar estimaciones superiores según los estudios que se seleccionen, llegando a describirse incidencias mayores al 4%. Probablemente se debe a las diferentes visiones que existen del TB, que ha sufrido una evolución desde los históricos conceptos de melancolía y manía, la posterior unificación kraepeliniana o la más reciente consideración como parte de un espectro que se continuaría con la población no afectada (Goodwin & Jamison, 2007). La edad media de inicio de la enfermedad se sitúa al principio de la edad adulta, alrededor de los 20 años, aunque su distribución tiene varios picos, debido probablemente a la heterogeneidad de la enfermedad (Leboyer et al., 2005) pero quizás también a su carácter dinámico, que describiremos más adelante. A pesar del tratamiento, los pacientes tienen numerosas recaídas y su pronóstico no puede considerarse bueno, aunque, como la propia enfermedad, es bastante variado: alrededor de un tercio de los afectados alcanzan la remisión completa, otro tercio continuarán con síntomas de forma episódica, aunque se recuperarán funcionalmente y el tercio restante presentarán una importante discapacidad (Goodwin & Jamison, 2007). Tanto la tasa de intentos de suicidio como la de suicidios consumados es especialmente alta, siendo probablemente la enfermedad que más contribuye a esta causa de mortalidad. Hasta un 15-20% de los afectados fallecen por suicidio, siendo el porcentaje de los que lo intentan en alguna ocasión entre un tercio y la mitad del total de pacientes (Gonda , 2012). Además, los errores diagnósticos son muy frecuentes. Sólo un 20% de los pacientes con trastorno bipolar en fase depresiva son diagnosticados correctamente en el primer año de tratamiento. Se describen retrasos medios de varios años en el diagnóstico de la enfermedad con consecuencias muy negativas para los resultados clínicos (Lish et al., 1994, Morselli et al., 2004). Por todo lo anterior y, a pesar de su gravedad, el TB no es todavía un problema bien resuelto por la medicina, siendo necesario investigar y avanzar en su comprensión para mejorar nuestros resultados. 7 scrivlnk://8636FFDB-6FA9-4F94-977C-03AA4D6CB910 Complejidad del concepto de TB Los síntomas afectivos acompañan al ser humano desde el inicio de la civilización. Ya en el papiro de Ebers aparece el primer esbozo de un cuadro depresivo. Tanto la manía como la melancolía fueron descritas por la escuela hipocrática, aunque en ese momento no se apreció la relación entre ambas. Fue Arateo de Capadocia en el siglo I d.C. el primero que dio un paso en esta dirección y describió la relación entre manía y melancolía, asociándolas en una sola entidad. En su Etiología y sintomatología de las enfermedades crónicas escribe: ‘‘Pienso que la melancolía es el principio y una parte de la manía […] La aparición de la manía es en realidad un empeoramiento de la enfermedad [melancolía] más que un cambio a otra enfermedad”. La psiquiatría francesa del siglo XIX señaló esta conexión a la que a la que Falret llamó locura circular y Baillarger locura de doble forma. Más tarde Emil Kraepelin, dentro de su gran síntesis, consideró los trastornos depresivos como parte de la enfermedad maníaco-depresiva, aunque posteriormente Angst y Perris los volverían a separar, dividiéndolos en unipolares y bipolares, siendo este segundo grupo la forma moderna de la que deriva el término actual de trastorno bipolar. La evolución del concepto en las últimas décadas ha llevado a su ampliación mediante formas menores (hipomanía, ciclotimia) o entidades híbridas (trastorno esquizoafectivo). Finalmente, tras las aportaciones de los trabajos de Klerman, Dunner o Akiskal, se ha propuesto desde una visión dimensional la existencia del espectro bipolar (Angst y Marneros, 2001). La historia del concepto pone de manifiesto las dificultades que tiene cualquier clasificación rígida y cartesiana para atrapar la complejidad de la enfermedad. Creemos que sería necesario entender y profundizar en la naturaleza de esta complejidad para avanzar en el tratamiento del TB. El trastorno bipolar como enfermedad dinámica La base de nuestro trabajo es que la dinámica es un punto clave para entender el concepto del TB. Simplemente ajustándonos a su definición en cualquiera de las clasificaciones, queda patente que lo esencial en el concepto del TB es cómo cambia el estado afectivo a lo largo del tiempo: un cambio autónomo que no se acompasa 8 adecuadamente con el entorno y que da lugar a conductas no adaptativas (APA, 2013, WHO, 2019). Es por esto que el TB pertenece al grupo de las llamadas enfermedades dinámicas, que se definen como aquellas que afectan a un sistema fisiológico cuya misión es mantener dentro de un rango una serie de variables biológicas. En estas enfermedades, al variar el valor de los parámetros, se llega a un punto en el que aparecen cambios cualitativos en la dinámica del sistema, siendo esta dinámica anormal el núcleo fisiopatológico de la enfermedad (Mackey y Milton, 1987). Creemos que no puede entenderse el TB sin comprender la naturaleza de este cambio en el estado afectivo, por eso nos parece tan necesario analizar la dinámica de la afectividad y la activación, así como las variables que determinan los cambios de la afectividad a lo largo del tiempo. Nuestro objetivo final es entender mejor este carácter dinámico del TB, sus patrones temporales complejos y los parámetros que influyen en ellos. De esta forma quizá podríamos predecir su evolución o incluso diseñar cambios ambientales o farmacológicos que nos llevasen hacia equilibrios en los que el paciente se encontrase estable. Definiendo el problema desde un punto de vista matemático, podríamos decir que nuestro objeto de estudio (la dinámica de la afectividad) es una serie temporal multidimensional que se comporta de manera no lineal. Se ha demostrado que los cambios anímicos en el TB siguen una dinámica no lineal caótica determinista, un hecho importante para nuestro trabajo (Gottschalk, 1995). Existen modelos no lineales para el análisis de series temporales. Las limitaciones para su aplicación han sido, hasta hace pocos años, de dos tipos. La primera de ellas era que los cálculos necesarios para resolver estos problemas excedían las posibilidades de los ordenadores de uso habitual. La segunda era la dificultad para disponer de series de datos suficientemente largas en las que poder aplicarlas: serían necesarias series temporales de variables que se extendieran en las escalas en las que se desarrolla la enfermedad. En el caso del TB estamos hablando de recoger variables con una frecuencia diaria a lo largo de al menos varios meses. Pero actualmente la recogida automatizada de variables, tanto fisiológicas (temperatura, frecuencia cardíaca, movimiento o sueño) como a través de formularios es más sencilla gracias, por ejemplo, a los dispositivos personales conectados a internet. Y en cuanto a la capacidad de procesamiento, está creciendo 9 scrivlnk://A2BC5B2E-31A9-454D-8205-047A9B48C288 de forma exponencial, de tal forma que hoy en día incluso muchos teléfonos móviles disponen de la potencia de cálculo necesaria para hacerse cargo de este tipo de tareas. Ambas limitaciones han sido superadas. Desde un punto de vista clínico, modelar el curso del TB nos permitiría predecir cuándo va a sobrevenir una crisis, algo tremendamente útil. En la actualidad la detección precoz resulta complicada: en los primeros momentos los síntomas y los cambios pueden ser muy sutiles, casi imposibles de advertir tanto para el paciente como para la familia. Conseguir una detección precoz nos permitiría tratamientos más efectivos, mejorando el pronóstico (Perry, 1999). Nuestro propósito es estudiar los parámetros que influyen en el paso de la estabilidad a una dinámica anormal. Queremos analizar el estado afectivo como una función del tiempo, buscando patrones y puntos críticos que predigan la aparición de síntomas en estos pacientes, para así ser capaces en el futuro de modelar el comportamiento de la enfermedad, adelantarnos a sus crisis, mejorarando la efectividad de nuestras intervenciones y la calidad de vida de nuestros pacientes. Para avanzar hacia ese horizonte nos hemos propuesto estudiar las diferentes variables predictoras de la manía y su utilidad para generar un modelo predictivo. 10 2. Fundamentos En este capítulo, primero exploraremos algunas hipótesis y fundamentos teóricos acerca del trastorno bipolar que nos servirán de base para plantear nuestra investigación. En primer lugar detallaremos la visión del trastorno bipolar como una alteración de la regulación de la actividad, la hipótesis de la primacía de la manía, la teoría neurotrófica de la depresión y la estrecha relación del TB con el sueño y el ritmo circadiano. Estas son las premisas que dirigen y sostienen nuestro análisis. Posteriormente, y en base a estas hipótesis, decidiremos los criterios que deben cumplir las variables que alimenten nuestro modelo. Pasaremos después a hacer una revisión de los predictores de los cambios en la dinámica del TB: sus características, ventajas e inconvenientes, teniendo como meta su uso en nuestro modelo. Finalmente revisaremos el estado actual del conocimiento sobre la dinámica del trastorno bipolar, para después poder plantear nuestros objetivos. 2.1 Trastorno bipolar, estado de ánimo y actividad El trastorno bipolar se define clásicamente como un trastorno de la regulación del estado de ánimo, el cual puede a su vez definirse como la tendencia a la aparición de un determinado tipo de emociones durante un tiempo prolongado. El estado de ánimo se encuentra a mitad de camino entre la inmediatez de la emoción y la estabilidad del temperamento, considerado el temperamento como un rasgo y no un estado. Estos tres constructos son herramientas para tratar de explicar el comportamiento a un nivel intermedio entre los reflejos y la conducta intencional planificada. Las emociones tienen una duración corta y aparecen ante situaciones específicas. Generalmente son estados reactivos ante un evento ambiental concreto. 11 En cambio, el estado de ánimo no suele relacionarse tanto con una situación concreta, aunque puede ser influido por estas. Refleja el estado de reactividad media del individuo y su orientación motivacional general, más allá del contexto ambiental puntual. Como hemos dicho antes, el temperamento no es un estado sino un rasgo. Forma parte de la esencia del individuo y no cambia a lo largo de la vida del individuo (Fox et al, 2018, pp. 6-43). Nuestro objeto de interés es el estado de ánimo, que se corresponde con la estrategia conductual seleccionada por el organismo para un periodo determinado. Esta estrategia debe ser una flexible, basada en los requerimientos del individuo a medio plazo y adaptada al contexto. En el TB habría un fallo en la regulación del estado de ánimo, que se volvería independiente a las necesidades del individuo e impermeable a la situación ambiental, dando lugar a conductas desadaptativas. La regulación del ánimo forma parte de un conjunto mayor de sistemas de control conductual cuya misión es mantener la homeostasis. Dentro de estos sistemas encontramos imbricados y anidados diferentes mecanismos como los reflejos, los instintos, las respuestas inmunes y endocrinas, las emociones, el control vegetativo, la regulación del ritmo circadiano, el ciclo sueño vigilia, la motivación o el sistema de activación conductual (Tinbergen, 1979; Dennet, 1996). Estos conceptos son construcciones teóricas diseñadas para ordenar y comprender el control de la conducta, que intentamos parcelar para su estudio aunque sea un todo complejo. No deben verse como realidades separadas, pertenecientes a diferentes universos cartesianos, si no queremos correr el riesgo de que se transformen en un corsé que impida entender el estado de ánimo y el TB en toda su complejidad. Resulta más útil entenderlas como un continuo entre la regulación metabólica, los reflejos, los instintos, la motivación y las emociones (Damasio, 2011). Por lo tanto, aunque en el actual paradigma de la psiquiatría se acepta que la depresión y la manía (y por lo tanto el trastorno bipolar) son alteraciones del estado de ánimo, esta definición no debería eclipsar una visión más amplia de una enfermedad en la que sabemos que se alteran otras áreas además de la afectividad, como la inmunidad (Rosenblat, 2017), el sistema endocrino o la gestión energética (Mansur, 2020). Incluso se ha sugerido que las alteraciones del ánimo podrían ser un epifenómeno y no el núcleo de la enfermedad (Joyce, 2008). 12 2.2 Manía, actividad e hipótesis de la primacía de la manía No se califica de TB a cualquier disregulación en el estado de ánimo. En las dos grandes clasificaciones de las enfermedades mentales, CIE 11 (OMS, 2019) y DSM V (APA, 2013), la existencia de episodios maníacos/hipomaníacos o al menos su combinación con síntomas depresivos en los episodios mixtos es condición sine qua non para definir el trastorno bipolar: no hay trastorno bipolar sin síntomas maníacos. Por otra parte, un episodio maníaco sin explicaciones alternativas (e.g. tóxicos, neoplasias) es suficiente para el diagnóstico del trastorno bipolar. Así visto, debemos considerar la sintomatología maníaca como el núcleo del trastorno bipolar, al menos según sus definiciones oficiales. La depresión sería un síndrome acompañante. Revisando la evolución de la definición de manía e hipomanía en las últimas versiones puede verse que, ya desde la CIE 10, ha sido necesaria que la “alteración del humor” se acompañe de un “aumento de vitalidad” (OMS, 1992). En la clasificación norteamericana es una característica que aparece en su última versión, pasando la manía en la DSM IV de ser un “estado de ánimo anormal y persistentemente elevado, expansivo o irritable” a convertirse en la DSM V en un “período bien definido de estado de ánimo anormalmente y persistentemente elevado, expansivo o irritable, y un aumento anormal y persistente de la actividad o la energía dirigida a un objetivo” (APA, 2013). Según estas clasificaciones el estado de ánimo anormal y un aumento de la actividad o energía son los dos pilares que definen la manía, y por lo tanto el trastorno bipolar. Ambas clasificaciones añaden otros componentes como criterios opcionales: el aumento de la autoestima (grandiosidad), las alteraciones del sueño, el aumento de la conducta verbal, la dificultad para mantener la atención, la aceleración del pensamiento, la impulsividad y el aumento de la actividad motora. La activación en el trastorno bipolar A pesar de que el concepto activación (también nombrado como actividad o energía) se usa como uno de los pilares diagnósticos de la manía, no hay acuerdo acerca de su definición (Scott, 2017). Sin embargo, su importancia y posición central 13 dentro de la manía despiertan una aceptación casi intuitiva. Nos interesa especialmente la activación por varias razones. La primera es que su existencia como factor independiente es apoyada por los diferentes estudios que analizan los factores que componen la manía (Cassidy, 1998; Rossi, 2001; Akiskal, 2003; Gonzalez-Pinto, 2003; Hanwella, 2011; Picardi, 2007; Ruggero, 2014). La activación se aísla siempre como el primer componente principal, con la excepción de los estudios que incluyen también los síntomas depresivos, en los que estos ocupan siempre la primera posición, pasando la activación a la segunda. El concepto de activación se asocia a otros como la impulsividad, la hiperactividad, la actividad dirigida a metas, la activación conductual o la actividad psicomotriz. En su forma negativa se correspondería con la falta de actividad o la inhibición psicomotriz. La aceleración del pensamiento, la logorrea y el aumento de la actividad motora también pueden considerarse dentro del mismo. Además la activación se relaciona con algunas alteraciones del sueño, como la falta de necesidad de dormir, pero las consideraremos aparte para prestarles una especial atención. Otros síntomas como la impulsividad, la disforia, las dificultades cognitivas, la falta de atención o los síntomas psicóticos no son tan fácilmente agrupables en la categoría de la actividad, así como tampoco la grandiosidad, quizás tampoco lo sean la aparición de emociones sin un desencadenante ambiental (rabia, agresividad o alegría). Desde otro punto de vista, el estado de ánimo puede estudiarse de forma simplificada como la combinación de dos grandes dimensiones: la activación y la valencia, situando a individuo en un estado de actividad/inhibición y de placer/ malestar (Fox et al, 2018, pp. 45-49). Así entendido, en la manía habría un aumento de actividad, a veces en la dirección de la disforia y otras en la del placer. Debido a su estrecha relación con la sintomatología maníaca, la dimensión actividad-inhibición nos parece un concepto clave para modelar el trastorno bipolar, como Ortiz (2018) también ha resaltado. 14 Hipótesis de la primacía de la manía Tomando como punto de partida el papel fundamental de la actividad en el trastorno bipolar, Koukopoulus (2006) enunció una elegante hipótesis que postula la manía como base del TB. Entendiendo el fenómeno excitatorio como la base de la enfermedad, su propuesta es que la manía es un fenómeno primario, siendo así la depresión secundaria a una manía o hipomanía precedentes. Como solía decir Kukopoulus: “La manía es el fuego y la depresión son sus cenizas”. Este autor entiende además como equivalentes hipomaníacos algunos estados de excitación o hipertimia que muchas veces se desdibujan en la figura del temperamento, enlazando así con las ideas de Akiskal (2007). Es interesante cómo este concepto ampliado de la manía es muy cercano al de activación, que hemos descrito antes. Aunque las ideas de Koukopoulus son destacadas en los textos más notables sobre el trastorno bipolar, no forman parte por el momento del corpus común y aceptado sobre la enfermedad (Ghaemi, 2017). Sin embargo, diferentes estudios apoyan esta hipótesis, tanto desde la neurociencia (Kotzalidis, 2017) como desde el ámbito clínico (Sani, 2017). Para nosotros es una hipótesis especialmente interesante para construir un modelo de la enfermedad. Teoría neurotrófica de la depresión Hay otro aporte teórico que va a resultar de interés para nuestro modelo: la teoría neurotrófica de la depresión. Ésta afirma que la depresión es el resultado de una disminución del trofismo del tejido nervioso en determinadas áreas cerebrales debido a un desequilibrio entre la regeneración y el desgaste de las mismas. Desde hace tiempo es bien conocida la implicación del eje hipotálamo- hipofisario-adrenal (HHA) en el síndrome depresivo describiéndose alteraciones en su regulación en personas con depresión. En general, los hallazgos apuntan hacia un déficit de la retroalimentación negativa de los corticoides endógenos sobre eje. Este estado crónico de hipercortisolismo daría lugar a un daño en los sistemas de plasticidad y mantenimiento de algunas áreas cerebrales, daño que sería el correlato de la depresión. Estas áreas terminarían perdiendo neuropilo, incluso neuronas, hallazgos que se han comprobado experimentalmente en algunas zonas concretas como el hipocampo (Jaggar, 2019). 15 El cortisol afectaría a diversos procesos plásticos, a través de una disminución del factor neurotrófico derivado del cerebro (BDNF) entre otros mediadores celulares, disminuyendo la sinaptogénesis y la neurogénesis, que se verían reducidas llegando a un balance neto negativo. Esto haría que el hipocampo no pudiera regular el HHA y daría lugar a una retroalimentación positiva. Según esta teoría los antidepresivos producirían su efecto cambiando el ambiente de mediadores celulares en el cerebro, lo que daría lugar a un aumento de la neurogénesis y sinaptogénesis que poco a poco restauraría el estado original llevando a la recuperación (Duman, 1997, Massart, 2012). Otras terapias efectivas en la depresión como la terapia electroconvulsiva también han demostrado un aumento de la neurogénesis en modelos animales (Palomo et al, 1976; Hellsten, 2002) y un aumento del BDNF en humanos con depresión (Bocchio-Chiavetto, 2006) Más allá de los detalles bioquímicos y de las áreas involucradas, que aún están en debate, la teoría neurotrófica nos explica la depresión como un desgaste ante un exceso de actividad, lo cual encaja muy bien con la teoría de la primacía de la manía, cerrando el círculo y completando la explicación: la excitabilidad de la manía sería la causante de la depresión al aumentar la función del HHA, ya que esa hiperactivación sería deletérea para áreas sensibles del cerebro al producir un desequilibrio en su plasticidad. Explicaría también el porqué en el trastorno bipolar se puede llegar a la depresión por varias vías, siendo una de ellas secundaria a la manía. Otras posibilidades serían la depresión producida por un estrés exógeno, un camino compartido con la depresión unipolar. Pero existirían otras muchas posibilidades como el envejecimiento y las alteraciones inmunes, endocrinas o metabólicas. Obviamente todas estos factores podrían combinarse de forma compleja. Disociación entre depresión y manía Pero, ¿qué implicaciones tienen estas teorías para el objetivo de modelar el TB?. Una de las más importantes es que esta visión patogénica del TB conlleva que los mecanismos subyacentes a la alteración en la regulación que lleva a la manía son diferentes a los mecanismos subyacentes que llevan a la depresión. Hay más datos que apoyan esta disociación en los mecanismos de depresión y manía. Los rasgos de personalidad que predisponen a padecer un TB se modelan 16 mejor separándolos en dos dimensiones diferentes: la predisposición depresiva y la predisposición maníaca (Murray, 2007). Esto se debería a que los individuos tienen una vulnerabilidad a la depresión y una vulnerabilidad a la manía que no guardan relación entre sí. Las combinaciones de ambas dotaciones darían lugar a todo un abanico de posibilidades (y de diferentes dinámicas de la enfermedad) que podrían abarcar desde las personas con TB que nunca tienen depresión, el TB tipo I, TB tipo II o incluso algunos trastornos depresivos unipolares como propone Goodwin (2007). Más allá de estas especulaciones, para nuestro objeto de estudio es extremadamente relevante esta separación entre los mecanismos que dan lugar a la manía y los que están detrás de la depresión. 2.3 Ritmo circadiano y trastorno bipolar Los ritmos circadianos aparecen en prácticamente en todos los organismos vivos. Son una adaptación a los requerimientos ambientales cíclicos de nuestra biosfera. En el ser humano regulan nuestros patrones de actividad y respuesta para sincronizarlos con los ciclos de luz y oscuridad. Un complejo sistema gobernado por un reloj central situado en el hipotálamo trabaja a distintas escalas, involucrando fotoreceptores específicos, sistema endocrino, sistema nervioso vegetativo pero también a verdaderos relojes moleculares dentro de cada una de nuestras células. Este mecanismo multiescala modula gran parte de las funciones corporales incluyendo la inmunidad, el metabolismo, la función mitocondrial, el neurodesarrollo, la actividad dopaminérgica, la neurogénesis y, por supuesto, la conducta (Logan, 2018). Una extensa bibliografía describe las disrupciones del ritmo circadiano en numerosas enfermedades mentales y, en especial, en el trastorno bipolar. Esta alteración en la ritmicidad se considera hoy en día una de sus bases fisiopatológicas (Wulff, 2010; Alloy, 2017). Los estudios realizados en diferentes localizaciones geográficas a lo largo de ambos hemisferios coinciden en que, tanto la manía como la depresión, tienen una presentación estacional. Hay un aumento de la probabilidad de aparición de un episodio maníaco en las fechas que rodean a los equinoccios, es decir, a mediados 17 de marzo y a mediados de septiembre, aunque parece ser más intensa la influencia del inicio de la primavera que la del otoño (Geoffroy, 2014; Medici, 2016). Aunque se han contemplado diversas hipótesis, los datos apoyan la variación en la luminosidad como responsable. En concreto, se cree que se debe a la variabilidad de la cantidad de luz diurna con el paso de los días y no a la cantidad total de luz durante una época concreta (Bauer, 2012). La exposición a la luz natural, en su patrón de 24 horas, es clave en la sincronización de los diferentes relojes biológicos a través del haz retinohipotalámico. En los mamíferos diurnos la luz del día aumenta la actividad mental y motora. La oscuridad en cambio facilita el sueño. La luz es uno de los principales zeitgeber o sincronizadores del ritmo circadiano, por lo que las épocas en las que hay una mayor variabilidad en la luminosidad (los equinoccios) serían de más riesgo para que se produjeran fallos en el mecanismo de control de los mismos. Son justamente las épocas en las que se describen más episodios maníacos. Pero esto no ocurre tan claramente en la depresión. Es otro dato que debe conectarse con la diferencia entre la fisiopatología de la manía y la depresión que apuntábamos antes. Uno de los parámetros que controla el reloj biológico es la actividad del individuo. Los seres humanos somos mamíferos diurnos y por lo tanto estamos programados para ser más activos por el día que por la noche. La actividad es una de las áreas de comportamiento más claramente subordinadas a los ritmos circadianos y, como hemos visto antes, la actividad define la manía. Por lo tanto las alteraciones en la regulación de los ritmos circadianos podrían llevar a aumentos no adaptativos de la actividad y ser un actor en la aparición de la manía. La manía y el TB bipolar parece encontrarse en el centro de la encrucijada que supone la compleja relación entre ritmo circadiano, sueño y actividad (Wulff, 2010). 2.4 Sueño y trastorno bipolar En el caso del sueño la relación con el TB es todavía más intrincada. La alteración del sueño es uno de los principales síntomas en el TB, formando parte de sus criterios diagnósticos. Durante una fase de manía suele disminuir la necesidad 18 de sueño, en cambio en las depresiones bipolares es más frecuente la hipersomnia. Las alteraciones del sueño persisten en distinto grado durante la eutimia y pueden aparecer antes del diagnóstico de la enfermedad (Gruber, 2011). Por otra parte, los cambios en el patrón de sueño son el pródromo más frecuente (y uno de los más precoces) antes de una desestabilización de cualquier signo (Jackson , 2003). Esta relación es bidireccional: una reducción en las horas de sueño o la irregularidad de los horarios puede desencadenar directamente una crisis, aunque también pueden ser la consecuencia de la misma (McClung, 2007). No debería sorprendernos teniendo en cuenta que la disminución de las horas del sueño no sólo conlleva un mayor gasto de energía y desgaste al aumentar el tiempo neto de actividad, sino que además el sueño tiene una función de regeneración y recuperación activa, con un rol importante en la plasticidad del sistema nervioso central. Además se ha descrito clásicamente que la privación del sueño conlleva al día siguiente un aumento de la activación (incluso se ha propuesto como posible herramienta terapéutica). También sucede en sentido inverso: el aumento de la actividad afecta a la ritmicidad de la fase del sueño (Mistlberger, 2010). Tanto las alteraciones en el sueño como las del ritmo circadiano influyen en el funcionamiento del HHA. De nuevo nos encontramos aquí con el rol del cortisol. Su disregulación se relaciona con la hiperactivación, la manía y la depresión (Vieta, 1999). Tanto los corticoides exógenos como la hiperproducción de cortisol endógeno dan lugar a cuadros maníacos y depresivos (Brown & Suppes, 1998). Esto debe conectarse con la teoría neurotrófica de la depresión y el concepto de manía como un aumento de la actividad. En cuanto a la arquitectura del sueño, la alteración más consistente es el aumento del sueño REM (Eidelman, 2010). Este dato puede tener más sentido si repasamos el modelo ampliamente aceptado de Borbély, según el cual el sueño se regula por dos procesos: el proceso S, un factor homeostático relacionado con la deuda de sueño y el proceso C, que dependería del ritmo circadiano. Ambos procesos interaccionarían entre sí de forma compleja (Borbély, 1982). El proceso S estaría relacionado con el sueño de ondas lentas, siendo su cantidad determinada por la deuda de sueño. Un aumento del sueño REM a costa del sueño de ondas lentas implicaría una menor función reparadora del sueño y/o una mayor activación durante el mismo. De nuevo otro dato a relacionar con el concepto de trastorno bipolar como una alteración del balance energético, la teoría de la primacía de la manía y la teoría neurotrófica de la depresión. 19 Nos encontramos con esta estrecha interrelación entre sueño, actividad y ritmo circadiano (Figura 1). Esto es esperable porque, más allá de la consideración del TB como una alteración de la regulación de la afectividad, encontramos también afectados en esta enfermedad múltiples mecanismos de control conductual a diferentes niveles: sistema endocrino, metabolismo, sistema vegetativo, motivación y fijación de metas o ciclos sueño-vigila. Si ampliamos el punto de vista el TB va más allá de una alteración en el estado afectivo: hay una desadaptación en la estrategia general que regula la actividad y el gasto de energía del organismo, un fallo en el control adaptativo encargado de seleccionar conductas proactivas o de reposo según sean los requerimientos del medio interno y externo. 20 Actividad Sueño Ritmos circadianos LuzManía Depresión Figura 1. Relaciones entre estado de ánimo, actividad, sueño y ritmo circadiano 2.5 Implicaciones para un modelo dinámico de la enfermedad Tomando en consideración las hipótesis y planteamientos teóricos explicados hasta ahora, vamos a analizar qué implicaciones tienen en la dinámica del trastorno bipolar. Partimos de las siguientes premisas: - La manía es la base del TB, su elemento definitorio. - El aumento de la actividad es el núcleo fundamental de la manía. - Hay una conexión causal entre manía y depresión pero no al revés. - La sobreactivación de la manía produce alteraciones plásticas que son la base de la depresión. - Existen dos dimensiones en la vulnerabilidad al TB: la depresiva y la maníaca. - La depresión puede tener causas distintas de la manía como el estrés exógeno entre otras. - Alteraciones en ritmos circadianos y sueño se relacionan con actividad, manía y depresión. - La exposición a la luz y la actividad afectan a su vez a los ritmos circadianos y al sueño. Según estos supuestos sería esperable que las dinámicas de la depresión y la manía fueran diferentes, estando además la depresión subordinada en parte a la de la manía, pero no al contrario. Esta es la razón por lo que vamos a diseñar un modelo que intente predecir las crisis maníacas y no las depresivas. Modelar la depresión a un mismo tiempo o, peor aún, como una sola dimensión que contemple manía y depresión en un mismo constructo, nos llevaría a peores resultados. 21 2.6 Características deseables en las variables predictoras No todas las variables son útiles para la construcción de un modelo. Sus características se encuentran limitadas en primer lugar por nuestros argumentos teóricos: según las premisas que hemos seleccionado deberemos enfocarnos en determinados ámbitos, aquellos apoyados por la visión de la enfermedad que soportan nuestras hipótesis de partida. Allí encontraremos a las variables que tendrán un mayor potencial explicativo (y predictor por lo tanto) de la enfermedad y su curso. Un segundo filtro se deberá a problemas más prácticos que teóricos como las facilidad de la medición de las mismas. Vamos a enumerar y describir brevemente cuales deben ser a nuestro juicio estas características: La obtención debe ser factible Medir algunas variables puede llegar a ser impracticable de forma rutinaria. Esto va a influir de forma determinante en nuestra elección. No olvidemos que el propósito final de nuestro trabajo es eminentemente clínico. Serán descartadas variables que exijan intervenciones incompatibles con una vida normal, como podrían ser los análisis sanguíneos diarios o cuestionarios que ningún paciente completaría de forma habitual por ser demasiado largos. En el caso de los formularios las preguntas deberían poderse responder rápidamente, intentando que la introducción de texto mediante teclado sea la menor posible. El caso ideal sería la automatización de la obtención de la variable sin intervención del paciente. Deben contener información que ayude en la predicción Se trata de algo obvio, pero el ratio de señal/ruido debe ser lo más alto posible. Esta característica no puede conocerse hasta que no exista un modelo preliminar, que es precisamente nuestro objetivo, pero en un cribado inicial deberemos tener en cuenta los hallazgos de anteriores investigaciones. No hay apenas bibliografía acerca de modelos del TB y cuando la hay no suelen especificar detalladamente variables que han usado. Sin embargo podemos revisar estudios acerca de pródromos y factores precipitantes. Nunca debemos olvidar la intuición que la experiencia clínica siempre aporta. 22 Granularidad temporal suficiente Dada la importancia que los ritmos circadianos tienen en el TB y su influencia en las variables relacionadas con el mismo, deberíamos conseguir una resolución temporal suficiente para tener un perfil circadiano de la variable. Esto implica altos ratios de muestreo, a veces impracticables. En aquellas variables de interés en las que esto no sea posible, consideramos que el mínimo sería de una medición cada 24 horas. Medida objetiva Siempre será preferible una medida objetiva, como la temperatura en grados centígrados, a una medida subjetiva y por lo tanto con menos validez como la intensidad de las ideas de culpa. Este criterio no puede ser eliminatorio ni estricto, pero sí debe tener un cierto peso. Sencillez Las variables que sospechemos involucran dimensiones diferentes tendrán que usarse con más cuidado que aquellas que consideremos más puras. Según nuestros argumentos teóricos un ejemplo del uso de este criterio lo tendremos en la selección de variables que predigan tanto manía como depresión, deberíamos considerarlas de menor calidad ya que podrían inducir sesgos en el algoritmo. Aparición tardía respecto al empeoramiento Sería de ayuda conocer aproximadamente la distancia temporal entre el cambio en la variable y la aparición del cambio en el estado del paciente. Si la distancia temporal es cero no será útil, ya que más que un pródromo será un síntoma. Cuanto más tiempo exista entre la alteración en los valores de la variable y el cambio en el estado de ánimo, más precoz podrá ser la predicción y más utilidad tendrá. Por desgracia este dato es casi siempre desconocido y en cualquier caso, probablemente tenga una variabilidad interindividual alta. 23 Monitorización continua Aunque tienen cierta tolerancia a los datos incompletos, la mayoría de los algoritmos de predicción funcionan mejor con series de datos completas. En la práctica, siempre existen errores en la recolección de datos, pero cuanto menos haya, mejor. Las diferentes variables tienen diferentes probabilidades de pérdidas de datos, siendo las mejores obviamente las que se recogen automáticamente. Por otra parte, la visión de la dinámica del TB como un fenómeno continuo, con alteraciones respecto a la población normal no sólo durante los episodios maníacos y depresivos, sino también durante los periodos de eutimia (MacKinnon y Pies, 2006) aumenta el interés de la recogida continuada de los datos. Longitud de los registros En los estudios clásicos sobre pródromos se observa como los síntomas maníacos son significativamente más largos que los depresivos. Aparecen de media 20 días antes de las crisis, frente a los 9 días de pródromos en los episodios depresivos (Molnar, 1988). Esto nos da una idea aproximada de cuánto tiempo como mínimo deberían abarcar nuestros datos. No obstante, cabe la posibilidad de que estos datos obtenidos a posteriori mediante entrevistas al paciente sean poco sensibles y existan alteraciones difíciles de captar por el paciente de forma más precoz. Esto parece esperable según nuestra impresión clínica, al menos en el caso de la manía. Ámbitos más interesantes Por último, nuestros presupuestos teóricos nos hacen apuntar hacia determinadas áreas y variables que según nuestra visión de la enfermedad deberían ser más útiles para el modelo. Estas áreas son, además del estado afectivo en sí mismo, la medición de la actividad, el ritmo circadiano y el sueño. Dentro de estos ámbitos, deberíamos ampliar el abanico de variables lo más posible de cara a un ejercicio que inicialmente no puede dejar de ser exploratorio. 24 2.7 Variables predictoras en el trastorno bipolar Para nuestro propósito deberemos revisar qué variables de entrada pueden servirnos para construir un modelo que prediga el estado afectivo, en concreto la aparición de manía. En realidad esta pregunta no es nueva. Desde casi el momento de la descripción del TB y sus anteriores avatares históricos sabemos que alteraciones extrínsecas como cambios en el sueño, estrés, consumo de tóxicos, interacciones sociales o cambios en la cantidad de luz diaria determinan el curso de la enfermedad y la aparición de crisis. A estas variables se las ha llamado pródromos, desencadenantes y factores protectores o causales. Hemos hecho una revisión de todas las variables que se han propuesto como posibles pródromos en el TB (Joyce, 1985; Keitner et al., 1996; Lam & Wong, 1997; Molnar et al., 1988; Smith & Tarrier, 1992; Altman et al., 1992; Molnar et al., 1988; Smith & Tarrier, 1992 ). En primer lugar tenemos los biomarcadores (Tabla 1) como la frecuencia cardíaca o la respuesta pupilar. Tabla 1. Biomarcadores Variable Medición automática Objetividad Área Frecuencia cardíaca Sí Alta SNA Pérdida de peso No Alta Hormonas y metabolismo TSH No Alta Hormonas y metabolismo Temperatura corporal Sí Alta Hormonas y metabolismo Supresión de CRH No Alta Activación Pupilometría No Alta SNA Tensión arterial No Alta SNA Hormonas sexuales No Alta Hormonas y metabolismo BDNF plasmático No Alta Hormonas y metabolismo EMG No Alta SNA Conductividad dérmica Sí Alta SNA 25 Hay un gran grupo de variables a las que sólo se puede acceder a través de la vivencia subjetiva del paciente (Tabla 2), como por ejemplo la anhedonia. Tabla 2. Variables subjetivas Variable Medición automática Objetividad Área Ánimo depresivo No Baja Emociones Falta de energía No Baja Activación Dificultades de concentración No Baja Otros Pérdida de apetito No Baja Hormonas y metabolismo Ánimo elevado No Baja Emociones Pensamiento acelerado No Baja Activación Disminución de necesidad de dormir No Baja Activación Aumento de la autoestima No Baja Emociones Aumento del interés por el sexo No Baja Otros Pensamientos de suicidio No Baja Otros Tristeza No Baja Emociones Miedo a volverse loco No Baja Emociones Sentidos aguzados No Baja Otros Ansiedad No Baja Activación Disminución de autoestima No Baja Emociones Sentirse creativo No Baja Otros Sentirse religioso No Baja Otros Aumento de preocupaciones No Baja Emociones Dificultades para levantarse No Baja Activación Dolres, malestar físcio No Baja Otros Culpabilidad No Baja Emociones Alucinaciones auditivas No Baja Otros Pensamientos extraños No Baja Otros Pensamientos sobre la muerte No Baja Otros Sentirse poderoso No Baja Emociones Sentirse importante No Baja Emociones Desinhibición o rabia No Baja Emociones Poco interés en sexo No Baja Otros No poder realizar tareas habituales No Baja Otros Menor necesidad de sueño No Baja Activación Anhedonia No Baja Emociones Involucrarse en muchos proyectos No Baja Activación 26 Por último, en un tercer grupos tenemos medidas de la conducta (ejercicio físico diario, comunicación verbal) y diferentes variables relacionadas con el sueño. (Tabla 3). Aunque los biomarcadores son objetivos y robustos, su obtención de forma periódica es laboriosa y más si precisamos un perfil diario completo. Por ejemplo: sería poco viable realizar perfiles circadianos de tirotropina. Sin embargo, sí existen algunos biomarcadores menos invasivos y sencillos de monitorizar, como la frecuencia cardíaca. Las medición de la conducta de forma continua en un entorno natural también es complicada. Para medir conductas como la sociabilidad o la actividad física existen tres tipos de fuentes: informes de observadores externos, autoinformes del Tabla 3. Variables conductuales Variable Medición automática Objetividad Área Sueño (acelerometría) Sí Alta Sueño y ritmos circadianos Actividad física (acelerometría) Sí Alta Activación Disminución de sueño Sí Alta Sueño y ritmos circadianos Hipersomnia Sí Alta Activación Aumento de actividad Sí Alta Activación Hablador No Alta Activación Distraibilidad No Sí Otros Irritabilidad No Baja Activación Tabaco No Alta Otros Alcohol No Alta Otros Cafeína No Alta Otros Uso de Redes sociales Sí Alta Activación Expresión facial Sí Alta Otros Postura corporal Sí Alta Otros Menos sociabilidad No Baja Activación Latencia del sueño Sí Alta Sueño y ritmos circadianos Aumento del gasto de dinero Sí Alta Otros Descuidar higiene y apariencia No Baja Otros Actividad en redes sociales Sí Alta Activación Movimiento (GPS) Sí Alta Activación 27 paciente y registros automáticos. Los informes externos podrían servirnos para validar en un momento otros tipos de medición, pero no para un uso continuado. Los autoinformes son un método sencillo y directo, aunque tienen sus puntos débiles. En cuanto a los registros automáticos, son el método ideal pero no están siempre disponibles. Ejemplos de registro automático son la cuantificación de intervenciones en redes sociales como marcador de sociabilidad o la acelerometría para medir la actividad física. Por últimos tenemos las variables subjetivas, a las que sólo podemos acceder a través de autoinformes o con herramientas psicométricas. A continuación profundizaremos en algunos de los aspectos que hemos nombrado y que nos parecen más importantes como son los biomarcadores, la medición de la conducta y el sueño, las variables subjetivas y el uso de autoinformes. Biomarcadores Muchas hormonas plasmáticas tienen una regulación circadiana y gran parte de ellas se han relacionado con cambios en el estado de ánimo. La tirotropina y la reactividad de la corticotropina fueron dos de los primeros biomarcadores que se relacionaron con el estado afectivo (Schmider, 1995; Souetre, 1998). De momento no se ha encontrado relación entre la testosterona y los cambios anímicos en el trastorno bipolar (Mousavizadegan, 2018) pero sí se ha visto una disminución global de la testosterona en los pacientes con trastorno bipolar (Wooderson, 2018), aunque siempre bajo los efectos de la medicación que con frecuencia tiene un efecto directo sobre ésta. No obstante, hay casos descritos de aparición de manía e hipomanía tras la administración de testosterona exógena (Wong, 2009; Elboga, 2018). En el caso de los estrógenos y progestágenos los datos son más claros, hasta el punto de que se sugiere su uso como tratamiento, pero la relación es compleja y no conocemos el signo de la misma (Meinhard, 2013; Rasgon, 2003). Se han estudiado otros mediadores como el BDNF plasmático, aunque no parece que tenga la resolución temporal suficiente para que ser de nuestro interés (Fernandes, 2011). Las alteraciones en el ritmo circadiano son una característica central en la clínica (y probablemente en la fisiopatología) del TB (Alloy, 2017) y la melatonina 28 uno de los mediadores más importantes del mismo. Se han encontrado numerosas alteraciones en los niveles de melatonina en pacientes con TB, pero para esta revisión nos interesa si existen variaciones de sus niveles en los diferentes estados de la enfermedad y así es: los niveles de melatonina en saliva se encuentran anormalmente elevados durante los episodios maníacos pero no durante el periodo depresivo o eutímico (Nováková, 2014). Además de hormonas y mediadores celulares, también existen marcadores biofísicos, que suelen ser técnicamente más sencillos de monitorizar. La temperatura corporal cambia su patrón circadiano en diferentes fases de la enfermedad (Souetre, 1998), también la respuesta pupilar a la luz (Bullock, 2019). La variabilidad de la frecuencia cardíaca ha resultado ser un predictor especialmente interesante y fácil de medir de forma continuada (Agelink, 2002). No sólo la frecuencia cardíaca, sino otras variables relacionadas con la actividad del sistema nervioso autónomo, como la tensión arterial están relacionadas (Voss, 2006). Hay estudios muy interesantes sobre los cambios en la prosodia y el tono de la voz como marcador de estado (Faurholt-Jepsen, 2016). Otras variables como la electromiografía de superficie o la conductividad de la piel no han sido estudiadas específicamente en el TB pero sirven para caracterizar estados afectivos (Kinase, 2013) y podrían ser buenos candidatos. Incluso hay indicios de que el peso también podría cambiar con los cambios de fase (Luppino, 2010). No incluimos los numerosos estudios de neuroimagen, otro tipo de biomarcadores, porque no son útiles para nuestro proyecto ya que no permiten una monitorización continuada en la práctica clínica habitual. Medición de la conducta Los cambios conductuales en los diversos estados de la enfermedad tienen un gran interés ya que son en su mayor parte un correlato de la actividad, uno de los núcleos que como hemos visto definen la manía y por lo tanto el TB. Una de las mejores formas de medir los cambios en la actividad de forma continuada y objetiva es la acelerometría o actigrafía (Scott, 2017). Se trata de un método validado para medir la actividad física, pero también el sueño. Es una 29 prueba no invasiva que monitoriza los ciclos de descanso y actividad mediante sensores que miden la aceleración en los tres ejes del espacio. Es usado entre otras cosas para estudiar los ritmos circadianos, el gasto metabólico y el sueño. Su gran ventaja es la posibilidad de registros continuados durante de varias semanas, lo cual permitiría estudiar la evolución de los patrones circadianos a lo largo plazo. Son aparatos de pequeño tamaño, generalmente en forma de reloj de pulsera, que el paciente porta durante un periodo determinado de tiempo. Tiene sensores piezoeléctricos que detectan la aceleración en los tres ejes del espacio y una memoria en la que se almacena la información que será procesada posteriormente. La información se recoge con una frecuencia determinada, siendo lo aceptado para el análisis del movimiento de los brazos en humanos entre 8 y 25 Hz. Los datos así obtenidos son inicialmente procesados mediante un filtro de frecuencias para evitar las interferencias. Esta información en bruto será revisada posteriormente por algoritmos que son capaces de detectar diferentes actividades motoras, también es una técnica validada para estimar el gasto energético secundario a la actividad física (Chen y Bassett, 2005). Otra medida indirecta de la actividad es el geoposicionamiento de los pacientes. Las distancias y trayectorias que recorren cada día se relacionan con la actividad y siguen patrones circadianos. Su estudio se ha utilizado en diversos proyectos como variables de entrada para la predicción del estado anímico en TB (Faurholt-Jepsen, 2014). Pero la actividad va más allá de la actividad motora. El grado de interacción social también es un aspecto conductual muy relevante para nuestro propósito. La medición automatizada de la interacción social puede parecer técnicamente más complicada que el movimiento, sin embargo algunos aspectos de esta interacción sí pueden medirse fácilmente: toda aquella interacción realizada a través del teléfono o internet. Resulta relativamente sencillo medir el uso de las redes sociales (Reece, 2017), correo electrónico o el teléfono, que supone un porcentaje importante de la comunicación interpersonal. Medición del sueño y ritmo circadiano El sueño y los cambios circadianos en la actividad se reconocen como una parte fundamental de la fisiopatología del trastorno bipolar. La alteración del sueño 30 es el pródromo más frecuente de los episodios maníacos y un predictor muy importante de los episodios depresivos, siendo su asociación causal con el trastorno bipolar compleja y bidireccional (Murray, 2010). La medición del sueño más exacta se consigue con la polisomnografía, pero incluso con polisomnógrafos domiciliarios resulta demasiado invasiva para su uso cotidiano. Una aproximación válida es de nuevo la acelerometría, que combinada con diarios de sueño da los mejores resultados. Aunque la polisomnografía es el método más exacto para la evaluación del sueño siendo capaz de diferenciar las fases del mismo, la acelerometría presenta otras ventajas, como la capacidad de realizar registros continuados durante semanas (posibilitando el estudio de la evolución de los patrones circadianos). Además, al ser ultraportátil, se usa en el entorno natural del paciente, por lo que tiene una mayor validez externa respecto a la polisomnografía, que se realiza en condiciones de laboratorio, normalmente en la habitación de un hospital. La acelerometría es lo suficientemente precisa como para identificar los períodos de sueño, pero no consigue detectar de adecuadamente la aparición del sueño o los despertares durante el mismo. Al compararla con la polisomnografía, su precisión es de aproximadamente el 90 por ciento para el tiempo total de sueño (Ancoli-Israel, 2015). Cualquier conducta de interés por compleja que sea puede ser finalmente medida mediante autoinformes de los pacientes. En conductas estratégicas como el consumo de alcohol o de tabaco, merece la pena explorar esta vía. Formularios diarios en los que los pacientes informen de su consumo de alcohol o tabaco, o de su nivel de actividad subjetivo durante el día serían variables que deberían explorarse como fuentes de datos para la predicción. También pueden usarse autoinformes para recoger las alteraciones del sueño. Vivencias subjetivas Para medir las vivencias subjetivas no queda más vía que la autoevaluación. El acceso a la cuantificación de la tristeza, euforia, la culpa, la rabia o la anhedonia son contenidos de la consciencia del paciente a las que sólo él tiene acceso. Hay test psicométricos en los que un evaluador externo podría en una entrevista cuantificar estas variables, pero de nuevo son de escaso interés para nuestras necesidades de monitorización continua. Existen un gran número de variables subjetivas que han demostrado su utilidad como pródromos (ver Tabla 2). Se trata de medidas de gran 31 interés ya que intuitivamente parecen acercarse a lo nuclear de la enfermedad. También son capaces de recoger aspectos tremendamente sutiles y muy característicos de la enfermedad como la agudización de los sentidos. Por contra, las dificultades en su caracterización, las diferencias interpersonales, en definitiva su propia subjetividad, suponen su mayor lastre. Autoinformes Dado lo visto hasta ahora, los datos más prometedores para estudiar la dinámica de la manía serían variables que describieran la actividad, el ritmo circadiano y el sueño. Una vez analizadas todas las posibilidades, dos grandes fuentes de datos nos parecen las opciones más adecuadas: las fuentes automáticas y las fuentes subjetivas. Aunque nuestro proyecto inicialmente combinaba ambos tipos de fuentes (acelerometría y autoinformes), problemas técnicos posteriores a la recogida de datos hicieron que tuviéramos que abandonar la vía de la acelerometría, haciendo descansar nuestro estudio en los autoinformes. Las gran ventaja de esta aproximación mediante autoinformes es su gran riqueza y diversidad. Es una metodología que puede aplicarse a toda la gama de pródromos. La naturaleza consciente de los fenómenos que queremos analizar hace sencillo usar autoinformes mediante entrevistas, encuestas o formularios para realizar las mediciones. Pero los autoinformes presentan por desgracia algunas limitaciones que hay que tener en cuenta. La primera de ellas es que no pueden ser automatizados, requiriendo siempre la intervención del paciente. Esto se convierte en un problema a la hora del cumplimiento, más aún cuando necesitamos frecuencias de muestreo altas, con un mínimo diario. Nos hemos decantado por el uso de formularios electrónicos en el teléfono móvil del paciente para minimizar esta desventaja ya que mejoran notablemente la accesibilidad. Otra limitación clave es que los autoinformes presentan problemas de validación externa. Pese a ser entrenados en el uso de los mismos, cada paciente es un evaluador diferente, y un evaluador no profesionalizado. Las discrepancias intraobservador son grandes. Esto es un obstáculo en el caso de análisis grupales, pero cuando realizamos análisis individuales no lo es tanto. Dado que realizamos mediciones repetidas, debemos tener en cuenta el sesgo de reensayo. Está descrito que repetir una misma medición produce cambios en las 32 respuestas. El fenómeno más habitual es la tendencia a retroceder a la media: con el tiempo los pacientes podrían dar puntuaciones menos extremas. Se cree que este tipo de sesgo aumenta conforme aumenta la frecuencia de medición. Henderson, Byrne y Duncan-Jones (1981) demostraron que el número de síntomas neuróticos autoinformados en una encuesta en población general disminuyó con el tiempo. Ormel, Koeter y Van Den Brink (1989) describieron efectos sustanciales de la repetición de pruebas en un estudio del Cuestionario de Salud General entre una población de pacientes externos de psiquiatría. También se hallaron efectos significativos en un estudio longitudinal en el que se utilizaron varios instrumentos neuropsicológicos de autoinforme, incluido el Perfil de los estados de ánimo (Salinsky et al., 2001). Otro problema es el sesgo del ánimo, que no ha sido apenas estudiado. Consiste en que el estado de ánimo influenciaría la tasa de cumplimiento. Probablemente nuestros pacientes tengan más tendencia a rellenar (o no) el cuestionario si están deprimidos o maníacos. A pesar de estos sesgos, los autoinformes han demostrado su utilidad justamente en el caso que nos ocupa: la medición de pródromos en el trastorno bipolar. De hecho, gran parte de estos estudios se han realizado mediante la autoevaluación de los pacientes. A la vista de estos estudios podemos afirmar que la autoevaluación de los pródromos en el trastorno bipolar presenta una buena fiabilidad test/retest (estabilidad) y una adecuada concordancia al compararse con la información de los familiares que conviven con ellos (Joyce, 1985; Keitner et al., 1996; Lam & Wong, 1997; Molnar et al., 1988; Smith & Tarrier, 1992 , Altman et al., 1992; Molnar et al., 1988; Smith & Tarrier, 1992). 33 2.8 Modelos del trastorno bipolar Nuestro plan es recoger información mediante autoinformes de las variables que nos parecen más prometedoras como fuente de información predictiva sobre la manía. Pero, ¿qué conocemos en realidad de la dinámica del estado de ánimo y de la manía? ¿Cómo cambia la afectividad con el tiempo en esta enfermedad? Matemáticamente podríamos definir el trastorno bipolar como un fenómeno oscilatorio complejo de la actividad y el estado afectivo. Podemos tomar como hipótesis de partida que el comportamiento del sistema dependerá de las propias características del individuo, como por ejemplo la excitabilidad intrínseca o la resiliencia, mientras que el medio externo tendrá un papel gatillo a través de factores como el estrés o los cambios de luz estacionales. Estos factores ambientales no serían determinantes para la existencia de la enfermedad, según los datos epidemiológicos de los que disponemos (Goodwin, 2007). Queremos por lo tanto modelar matemáticamente este fenómeno oscilatorio. Sorprendentemente no hay una gran bibliografía sobre modelos matemáticos de la evolución del ánimo en el TB. Hay diversas estrategias en el modelado de los estados afectivos. Casi todas parten de la base de que el estado afectivo es un sistema no lineal, algo que se conoce desde hace tiempo (Gottschalk, 1995; Bonsall, 2011). Sabemos más concretamente que los cambios afectivos siguen en el ser humano una dinámica caótica compleja. Esto significa que presentan un comportamiento irregular pero no aleatorio que no sigue ecuaciones lineales, por lo que podría llegar a predecirse mediante las herramientas adecuadas. Hay múltiples aproximaciones para modelar series temporales no lineales, pero quedan algo limitadas dadas las características del caso concreto que nos ocupa, como su no- estacionalidad, con esto nos referimos a que el comportamiento de su distribución no es homogéneo en el tiempo (Cheng, 2015). En las personas con trastorno bipolar se aprecia un attractor de baja dimensionalidad. Se trata de una diferencia interesante que hay que subrayar: el TB conlleva una dinámica de la variación del ánimo con una menor dimensionalidad y mayor organización (menor entropía) frente al estado de ánimo en personas no afectadas por la enfermedad. Esta disminución en la entropía de la información es un hallazgo común en el estudio de las series temporales de gran número de 34 patologías dentro de las llamadas enfermedades dinámicas. Un ejemplo clásico son las arritmias cardíacas o la epilepsia (Gottschalk, 1995). Aunque pueda parecer contraintuitivo, el estado de un paciente con TB muestra una mayor organización que el de una persona sin enfermedad. Un sistema adaptado al medio es el que consigue responder y estar en sincronía con innumerables variables externas. La falta de sincronía de respuesta y de adaptación (que implica una menor dependencia, una menor dimensionalidad y un funcionamiento más autónomo y menos conectado con el exterior) llevaría a una menor adaptación al medio, es decir, a la enfermedad (Glass, 2015). Como hemos dicho anteriormente, la predicción del estado de ánimo se considera por como un problema de modelado de una serie temporal con un comportamiento no lineal. Se han intentado aplicar modelos autorregresivos, algoritmos de aprendizaje automático, pero también modelos más convencionales: Glenn encuentra variaciones en la entropía al analizar los 60 días previos a una crisis (2006). Estas variaciones podrían servir como alarmas de una crisis. Se replican hallazgos similares al analizar las variaciones anímicas recogidas mediante autoinformes, aplicando después modelos autorregresivos (Bonsall, 2011). Tras intentar usar varios métodos para predecir los cuadros depresivos en TB, Moore (2012) afirma que su heterogeneidad hace que sea difícil encontrar un modelo general para todos ellos. Quizás la subordinación de los síntomas depresivos a la manía y a otros factores externos pueda contribuir a esta heterogeneidad. En una aproximación muy diferente Goldbeter (2011) tiene un modelo basado en las ecuaciones de Michaelis-Menten, una estrategia de abajo a arriba que puede servir de inspiración a la hora de buscar modelos, aunque es una forma de trabajar diferente. Es interesante su observación acerca de la elevada autocorrelación temporal y el aumento de la varianza que se observa en estos sistemas al acercarnos a un cambio de estado brusco, lo cual podría servir de indicador para sospechar que se acerca una crisis. En una publicación dentro del ámbito puramente teórico se generan varias series temporales con datos sintéticos y se analizan con diferentes métodos, todos ellos perteneciente a las herramientas del aprendizaje automático (Ortiz, 2004). Se trata de una estrategia de modelado muy interesante, similares a las que 35 pretendemos aplicar. Ortiz también sitúa el concepto de energía/activación en primer lugar a la hora de construir sus modelos. Nuestra elección para las herramientas de modelado también es el aprendizaje automático. En la siguiente sección se desarrolla una introducción al tema y se explican las razones de nuestra decisión. 2.9 Aprendizaje automático El aprendizaje automático es un conjunto de técnicas dentro del campo de la inteligencia artificial, que se utilizan para obtener conocimiento acerca de un conjunto de datos sin una programación explícita. La abstracción y la generalización se realizan de una manera más o menos autónoma. Según el grado de esta autonomía las técnicas de aprendizaje automático se clasifican en dos grandes grupos: supervisadas y no supervisadas. Las técnicas supervisadas requieren la acción humana para validar los resultados que el algoritmo produce, de tal forma que mediante nuestra guía externa el algoritmo aprende progresivamente a dar mejores respuestas. Las técnicas no supervisadas no requieren la intervención externa, siendo el propio algoritmo el que toma decisiones acerca del conocimiento que quiere extraer de los datos y su validez. Un ejemplo de esto último serían los algoritmos que clasifican entidades en grupos significativos, decidiendo por sí solos el número de grupos y su naturaleza. También hay técnicas no supervisadas en las que el algoritmo recibe una respuesta de refuerzo positivo o negativo (fallo o éxito) del entorno y tiende a maximizar los éxitos, aunque sin intervención humana. Varias características del problema al que nos enfrentamos nos han llevado a seleccionar el aprendizaje automático como herramienta de modelado de las crisis. La primera de ellas es la naturaleza y heterogeneidad de las variables predictoras. Como hemos podido comprobar, existen datos de naturaleza muy diversa que contienen información aprovechable para nuestro modelo: variables cuantitativas, 36 cualitativas, conjuntos de datos recogidos en diferentes escalas temporales, pertenecientes a campos muy diversos, relatados por el pacientes o recogidos de forma automática. Además la información está repartida en un gran número de variables. Sospechamos que cada una de ellas puede aportar una pequeña cantidad de información al modelo por lo que queremos analizar todas ellas simultáneamente. El análisis de este tipo de conjuntos de datos se realiza mejor mediante algoritmos automáticos que lidian mejor con esta complejidad. El comportamiento no lineal es la segunda característica que nos ha impulsado al uso de los algoritmos de aprendizaje automático, que tienen una gran aplicación en este tipo de problemas, como hemos desarrollado anteriormente (Portella et al, 2018, López et al, 2016, López et al, 2017, Llamoca et al, 2019). Pero más allá de la naturaleza matemática del problema en cuestión, lo que personalmente más nos ha animado al uso del aprendizaje automático es que se trata de un método totalmente ateórico. Dada la ausencia de fundamentos que sostengan sólidamente una teoría sobre la conducta y la afectividad humana, no queríamos plantearnos un modelo fenomenológico, ni por supuesto un modelo teórico (Achinstein, 1968). Creemos que el aprendizaje automático es una gran herramienta para disminuir los sesgos y mantener una perspectiva abierta. 37 3. Objetivos e hipótesis Objetivo El objetivo de este proyecto es estudiar la posibilidad de modelar y predecir el estado afectivo de los pacientes con trastorno bipolar mediante aprendizaje automático para poder entender mejor la naturaleza y el carácter dinámico que caracterizan a esta enfermedad. Queremos analizar los parámetros que influyen en el paso de la estabilidad a una dinámica anormal, entendiendo el estado afectivo como una función del tiempo. Hipótesis Nuestra hipótesis es que es posible predecir la aparición de sintomatología maníaca mediante el análisis de variables clínicas recogidas previamente. Visto lo anterior, y teniendo como meta general el avanzar hacia un modelo preliminar que nos sirva para entender mejor la dinámica de los cambios afectivos en el trastorno bipolar, hemos planteado la siguiente estrategia para llevarla a cabo: - En una primera fase a la que llamamos estudio A analizaremos el potencial predictivo de diferentes variables recogidas mediante autoinformes. - Posteriormente, en el estudio B, aplicaremos diferentes algoritmos a las variables seleccionadas en la primera fase y mediremos la capacidad predictiva de cada uno de ellos. Objetivos del estudio A Analizar las características de diferentes variables que pueden recogerse con autoinformes para evaluar su potencial predictivo para un futuro modelo matemático que prediga la aparición de síntomas maníacos. En las variables a estudiar nos interesa especialmente: - La factibilidad en cuanto a su recogida. 38 - Cantidad de información contienen y su correlación con la escala de manía de Young (YMRS). - Relación temporal con los cambios en el YMRS. Objetivos del estudio B El objetivo es realizar un análisis exploratorio de la aplicación de diferentes estrategias y algoritmos de aprendizaje automático sobre nuestro conjunto de datos con el fin avanzar hacia un futuro un modelo de la dinámica del trastorno bipolar. Para ello mediremos y compararemos la capacidad predictiva de cada una de las variantes de este análisis, según el algoritmo aplicado y según el grupo de variables estudiado. 39 4. Estudio A: evaluación de las variables predictoras de la manía En este estudio pretendemos evaluar las posibilidades predictivas de las variables del formulario. Es un primer paso para poder más tarde construir un modelo preliminar. Vamos a describir en primer lugar la metodología adoptada para después explicar los resultados del mismo. 4.1 Metodología del estudio A Muestra La muestra está compuesta por 3190 formularios completados por 25 pacientes con diagnóstico de trastorno bipolar, recogidos entre enero de 2018 y agosto de 2018, durante sus consultas habituales en la Unidad de Tratamiento de Trastorno Bipolar (UBIP, descrita en el anexo I). Estos datos se han analizado en relación al valor de la escala YMRS, test que se realiza en cada consulta de seguimiento con su psiquiatra o su psicólogo. Aunque en el protocolo de seguimiento de UBIP se solicita a los pacientes completar el formulario de forma diaria, la adherencia es parcial: sólo el 55,6% de los pacientes lo completaron habitualmente. Se recogieron datos sociodemográficos generales: edad, sexo, tipo de convivencia en el domicilio, el estado laboral y el nivel de estudios, así como algunos datos clínicos como el tipo de diagnóstico de trastorno bipolar (tipo I vs II), el número de ingresos y la existencia de trastornos adictivos a sustancias. No encontramos diferencias significativas entre el grupo de pacientes que ha rellenado el formulario frente al que no, a excepción de la variable consumo de otras drogas, en las que los pacientes de nuestra muestra con consumo de drogas ilegales están menos representados (Tabla 4). 40 El protocolo de selección de pacientes se basa en los criterios CIE 10 (WHO, 1992) para trastorno bipolar, aunque una revisión posterior de la historia de estos pacientes nos ha permitido comprobar que todos ellos cumplen también criterios para TB tipo I o II según criterios DSM-V (APA, 2013). La participación en el estudio se ofreció a todos los pacientes de UBIP sin distinción. El conjunto de datos final tiene 3190 observaciones con 18 variables, que se han asociado con 253 mediciones de YMRS tal y como se explica en la sección Análisis. En el anexo III puede consultarse la descripción del formulario online y sus campos. Total Seguimiento No seguimiento prueba p Edad (años) 44,5 47 41,3 t student 0,17 Sexo masculino ( %) 47,2 62,5 35 χ² 0,10 Convivencia ( %) S36,1/Pa25/ P36,1/H0/O2,8 S45/Pa20/P30/H0/ O 5 43,8/Pa31,2/ S25/8,1/H0/O2,8 χ² 0,44 Estado laboral (%) Pa 36,1 / T 30,6 / J 30,6 / E2,8 Pa 20 / T 35 / J 40/ E 5 Pa 56,2/ T 25 / J 18,8 / χ² 0,13 Estudios (%) S 51,4 / M 45,9 / B 2,7 S = 65 / M 35 / B0 S 31,2 / M 6,2 / B 43, 8 χ² 0,09 TAB tipo I (%) 69,4 75 62,5 χ² 0,42 Núm. de ingresos 4,5 4,1 5 t student 0,64 Dependencia a alcohol (%) 33,3 25 43,8 χ² 0,23 Dependencia a tabaco (%) 58,3 50 68,8 χ² 0,25 Dependencia a cafeína (%) 61,1 60 62,6 χ² 0,87 Otras drogas (%) 13,8 5 31,2 χ² 0,03 Tabla 4. Caracterización de la muestra según el seguimiento al formulario. (1) P (Padres), Pa (pareja), S (solo), H (hijos), O (Otro) (2) P (pensionista), Pa (paro),T (trabajando), E (estudiando) (3) Básicos (B), Medios (M), Superiores (S) 41 Variables e instrumentos de medida Variable resultado: puntuación en escala de Young Nuestro objetivo es modelar la aparición de un episodio maníaco, así que una de las decisiones más trascendentes es cómo vamos definir su existencia. En este caso no es necesario tener una monitorización continuada de la variable, pero sí es primordial la calidad de la medición, por eso hemos seleccionado un test heteroaplicado, en concreto la escala de Young para la manía (YMRS) que es un estándar de facto para el estudio de la manía. Su administración es sencilla, breve y tiene buenas características psicométricas. La YMRS fue desarrollada por Young y sus colaboradores en 1978. Está diseñada para ser completada por un clínico con experiencia en trastorno bipolar. Consume unos 20 minutos de tiempo y se compone de 11 preguntas en las que se puntúan diferentes posibles síntomas según la información recogida a partir de una entrevista abierta, teniendo en cuenta tanto la información verbal del paciente como su conducta. Su puntuación final oscila entre 0 y 40. Variables del formulario online Según nuestro planteamiento inicial, las variables predictoras deben darnos información acerca del estado afectivo, la actividad, el ritmo circadiano y el sueño, por lo que a priori cuantas más variables recoja el formulario, más información. No obstante, tenemos que limitar el número de preguntas para conseguir que el test se complete rápidamente con el objetivo de minimizar los problemas de cumplimiento. Las variables recogidas en el formulario son las siguientes: ánimo alcohol otras_drogas hora test cenit sueño despertar duración sueño cafeína tabaco irritabilidad ansiedad calidad del sueño concentración dormir motivación 42 scrivcmt://5997C055-3C18-43E2-BE3E-E937E9851C2A En el anexo II se describen las preguntas del formulario para cada una de ellas y sus características principales. Para recoger datos generales del estado afectivo se realiza una pregunta general sobre el estado de ánimo, en una escala Likert con dos polos (+3 y -3) de 7 posiciones, siendo la posición media la eutimia y los dos extremos depresión y manía, también se ha recogido mediante este tipo de escala Likert una pregunta sobre motivación. Otros aspectos del ánimo más concretos se han recogido mediante preguntas tipo Likert monopolares de 5 posiciones 1-5 sobre la ansiedad y la irritabilidad. Además se ha incluido una pregunta acerca de los problemas cognitivos de la manía (concentración) que creemos tiene gran relevancia clínica (Malhi, 2018). En cuanto al componente de la activación, se ha preguntado de forma general sobre la motivación. Entendemos relacionadas con el concepto de activación las cuatro preguntas acerca de adicciones a sustancias. Para obtener información sobre el sueño se pregunta acerca de la hora del inicio y del fin del mismo, en la línea del clásico diario de sueño. Se ha añadido una pregunta subjetiva acerca de la calidad del sueño, para añadir información acerca de problemas de sueño no relacionados con su duración. Las dos preguntas acerca de la hora de inicio y finalización del sueño capturan además información sobre el ritmo circadiano. Además, a partir de éstas, se calculan dos variables derivadas: duración total del sueño y cenit del sueño (hora central de la fase de sueño). Una variable especialmente interesante de este cuestionario (la única con medición automatizada) es la que recoge la hora de realización del cuestionario. Lo consideramos como un dato añadido acerca del ritmo circadiano. En el formulario se pregunta muchas veces por conceptos muy subjetivos y que cada paciente va a entender de una forma diferente, pero creemos que las respuestas no guardan el conocimiento en el valor absoluto de cada dato sino en la variación intrapaciente a lo largo del tiempo. La tasa de respuesta global ha sido del 49%, aunque hay una gran variabilidad interindividual, desde un máximo del 91% de días rellenados hasta un mínimo del 19%. 43 La correlación entre las distintas variables del formulario online de todos los pacientes en su conjunto puede apreciarse en la Figura 2, correspondiendo los espacios en blanco con valores de correlación que no son significativos con p=0.05). No obstante, al calcular esta mismas correlaciones de forma segregada por individuos (Figura 3) puede observase que no hay único patrón de correlación aunque podemos observar patrones similares entre los pacientes D y E y los pacientes C y B. Procedimiento La recogida de datos ha tenido una duración de seis meses de manera ininterrumpida. Los pacientes estaban habituados al uso del cuestionario online, ya que se trata de una herramienta base de evaluación en la unidad, por lo que no ha sido necesario su entrenamiento específico para el estudio. De todas formas, las 44 −0.23 0.52 0.32 0.31 −0.28 −0.33 0.33 0.38 −0.26 −0.23 −0.19 0.46 −0.43 −0.36 0.76 0.32 0.86 0.72 tabaco cafeina dormir concentracion calidad_sueno ansiedad irritabilidad duracionsueno despertar cenitsueno horatest otras_drogas alcohol animo ca fei na do rm ir co nc en tra cio n ca lida d_ su en o an sie da d irri tab ilid ad du rac ion su en o de sp ert ar ce nit su en o ho rat es t otr as _d rog as alc oh ol an im o moti va cio n Figura 2. Correlaciones significativas agregadas entre las variables del formulario. instrucciones del formulario están recogidas en las propias preguntas (ver anexo II), aunque ante dudas sobre cómo completarlas, podían recurrir a sus terapeutas. Las puntuaciones de la YMRS se han recogido sistemáticamente en cada consulta individual que se ha realizado, tanto por parte de su psiquiatra como de su psicólogo. Esto tampoco ha supuesto un cambio en la forma de trabajar de la unidad, ya que este test entra dentro del protocolo de seguimiento en UBIP. Las mediciones de YMRS se han realizado durante las citas habituales de los pacientes con sus terapeutas, por lo que no tienen una frecuencia de medición exacta. No obstante, en el protocolo de UBIP el periodo máximo de tiempo entre valoraciones es mensual, con una media de tres semanas. Durante estas entrevistas se mide también la escala de depresión de Hamilton (HDRS) y se recogen diversos datos de evolución, como la escala de evaluación de actividad global (EEAG), el diagnóstico o la percepción de la mejoría del paciente. Durante el periodo de recolección de datos los pacientes han seguido con su tratamiento habitual. Se les ha pautado la medicación que en cada momento han precisado y han asistido de forma habitual a sus consultas ambulatorias así como a sus terapias grupales de psicoeducación. Análisis Para realizar el análisis se han recogido las 15 variables del formulario de los 30 días previos a cada medición de YMRS a las que llamaremos variables primitivas, ya que luego van a ser transformadas. Dos de estas variables no se han podido evaluar al completo debido al escaso número de casos positivos que han presentado. Una de ellas es alcohol, una variable dicotómica en la que el paciente refiere si ha bebido o no alcohol ese día. Sólo hemos encontrado 17 casos positivos en 3190 observaciones por lo que resulta difícil sacar conclusiones del mismo debido al tipo de análisis que pretendemos realizar. La variable otras drogas, que informa del consumo de drogas diferentes al alcohol, tabaco o cafeína, no ha tenido ningún caso positivo. Esta baja incidencia de consumo puede parecer sorprendente ya que en el trastorno bipolar se describe una alta comorbilidad con las dependencias, pero en nuestra muestra no se producen apenas consumo de alcohol creemos que debido al tipo de seguimiento (en esta muestra el 25% de los pacientes presentan un 45 diagnóstico de dependencia a alcohol en remisión). En cuanto al consumo de otras sustancias, sólo el 5% de nuestra muestra tenían antecedentes del mismo. Por todo esto se han retirado del análisis las variables alcohol y otras drogas, quedando un total de 13 variables primitivas. Todas las variables primitivas se han estandarizado. Lo más relevante de esta estandarización es que se ha realizado en grupos separados por individuos, es decir, cada individuo se ha estandarizado consigo mismo. Lo hemos hecho de esta forma porque a priori creemos que hay diferencias importantes en la forma individual de responder al cuestionario: cada paciente tendrá diferentes formas de entender la escala y las unidades de cada pregunta. Por lo tanto, para mejorar la calidad de la información, la estandarización es individual para hacer las respuestas más comparables entre individuos. Para ello adoptamos el valor mínimo de la respuesta de cada paciente como 0, el valor máximo como 1 y los valores medios siguiendo un método convencional dividiendo por dos desviaciones estándar, para evitar los problemas de estandarización en las variables binarias (Gelman, 2008). Para continuar con el análisis se han generado variables derivadas, que son estadísticos de las variables primitivas en un intervalo temporal determinado. Por ejemplo: usamos la media del consumo de tabaco y no el consumo de tabaco. El objetivo es agrupar los datos, que de esta manera contendrán una mayor densidad de información. Para cada una de las 13 variables primitivas se ha calculado su media, desviación típica (sd), valor máximo (máx) y mínimo (min), resultando 52 variables derivadas. Este cálculo se ha realizado para diferentes intervalos temporales. Los intervalos temporales seleccionados son: el intervalo 30-1 con datos de los 30 días previos a la medicación del YMRS, el intervalo 1-10 con datos de los 10 días previos al YMRS, el intervalo 20-11 con datos de los diez días centrales del periodo total de 30 días y el intervalo 30-21 de los diez últimos días del mes. Por lo tanto tendremos un total de 208 variables (52 variables para cada uno de los cuatro intervalos temporales). Los nombres de estas variables se construyen mediante el nombre de la variable primitiva seguido de la transformación estadística (media, sd, máx o min) más el sufijo temporal (ninguno para las variables del intervalo total 1-30, 10 para el intervalo 1-10, 20 para el intervalo 20-11 y 30 para el intervalo 30-21). Esto nos 46 47 Figura 3. Correlaciones entre variables del formulario calculadas individualmente en diferentes pacientes A, B, C, D, E y F. −0.26 0.45 −0.42 −0.26 −0.27 −0.7 0.74 0.67 0.71 −0.27 animo ansiedad irritabilidad concentracion tabaco cafeina dormir despertar motivacion calidad_sueno duracionsueno cenitsueno alcohol otras_drogas an sie da d irri tab ilid ad co nc en tra cio n tab ac o ca fei na do rm ir de sp ert ar moti va cio n ca lida d_ su en o du rac ion su en o ce nit su en o alc oh ol otr as _d rog as ho rat es t MARO −0.29 −0.23 0.9 −0.28 0.3 −0.36 0.21 −0.34 0.4 −0.29 0.32 −0.28 0.67 −0.27 0.77 0.83 −0.21 −0.26 animo ansiedad irritabilidad concentracion tabaco cafeina dormir despertar motivacion calidad_sueno duracionsueno cenitsueno alcohol otras_drogas an sie da d irri tab ilid ad co nc en tra cio n tab ac o ca fei na do rm ir de sp ert ar moti va cio n ca lida d_ su en o du rac ion su en o ce nit su en o alc oh ol otr as _d rog as ho rat es t GIUS −0.57 −0.33 0.63 0.29 −0.56 0.32 −0.33 0.72 −0.23 0.77 0.89 −0.33 0.39 animo ansiedad irritabilidad concentracion tabaco cafeina dormir despertar motivacion calidad_sueno duracionsueno cenitsueno alcohol otras_drogas an sie da d irri tab ilid ad co nc en tra cio n tab ac o ca fei na do rm ir de sp ert ar moti va cio n ca lida d_ su en o du rac ion su en o ce nit su en o alc oh ol otr as _d rog as ho rat es t SAPE −0.59 −0.13 −0.4 0.6 −0.3 −0.23 0.56 0.46 −0.51 0.21 0.22 0.28 0.22 −0.23 −0.25 −0.23 −0.16 0.25 −0.43 0.26 −0.31 −0.27 −0.26 −0.38 −0.24 0.28 −0.35 −0.3 0.72 −0.44 0.79 0.89 −0.29 −0.18 −0.63 0.23 0.43 −0.23 animo ansiedad irritabilidad concentracion tabaco cafeina dormir despertar motivacion calidad_sueno duracionsueno cenitsueno alcohol otras_drogas an sie da d irri tab ilid ad co nc en tra cio n tab ac o ca fei na do rm ir de sp ert ar moti va cio n ca lida d_ su en o du rac ion su en o ce nit su en o alc oh ol otr as _d rog as ho rat es t DOSI −0.36 0.42 −0.23 −0.52 0.89 −0.55 −0.45 0.5 −0.22 0.31 0.52 −0.39 0.42 0.39 −0.21 −0.24 0.32 0.4 −0.14 −0.28 −0.28 −0.62 0.78 0.47 −0.62 −0.49 0.42 animo ansiedad irritabilidad concentracion tabaco cafeina dormir despertar motivacion calidad_sueno duracionsueno cenitsueno alcohol otras_drogas an sie da d irri tab ilid ad co nc en tra cio n tab ac o ca fei na do rm ir de sp ert ar moti va cio n ca lida d_ su en o du rac ion su en o ce nit su en o alc oh ol otr as _d rog as ho rat es t ECSA 0.61 0.62 0.65 −0.66 −0.39 −0.22 0.44 0.45 0.73 0.85 0.93 −0.15 0.61 −0.19 animo ansiedad irritabilidad concentracion tabaco cafeina dormir despertar motivacion calidad_sueno duracionsueno cenitsueno alcohol otras_drogas an sie da d irri tab ilid ad co nc en tra cio n tab ac o ca fei na do rm ir de sp ert ar moti va cio n ca lida d_ su en o du rac ion su en o ce nit su en o alc oh ol otr as _d rog as ho rat es t SEOR A B C D E F aportará información acerca de la distribución temporal en las asociaciones que encontremos. Por ejemplo: la variable tabaco media 20 correspondería a la media de los valores de consumo de tabaco en los días comprendidos entre el 11 y el 20, siendo el día cero el día en el que se ha medido el YMRS. Esta metodología sirve para concentrar la información temporal que guarda la serie previa de variables. Una alternativa hubiera sido la aplicación de algoritmos específicos de aprendizaje automático sobre series temporales multivariables, pero son técnicas de análisis muy complejas todavía en desarrollo que se plantearán como trabajo futuro. Evaluación de las variables Aunque podríamos usar las 208 variables en el análisis, da mejores resultados seleccionar un grupo determinado de ellas. Así aumentamos el ratio señal/ruido ya que nuestras variables tienen mucha información redundante, como puede apreciarse fácilmente en la Figura 2. Las técnicas para seleccionar variables previamente a la aplicación de un algoritmo de aprendizaje automático reciben el nombre de selección de atributos. Las estrategias generales para la selección de atributos pueden englobarse en tres grandes grupos: estrategias wrapper, estrategias de filtro y estrategias asociados al algoritmo, aunque también existen métodos híbridos. Como se trata de un estudio preliminar independiente del tipo de algoritmo que queremos usar en un futuro, las asociadas a algoritmo quedan descartadas, además tienen más problemas de sobreajuste cuando hay escasez de datos, como en nuestro caso (Alelyani et al.,2018). También hemos descartado las estrategias wrapper, que consisten en computar todas las posibles agrupaciones del variables, porque consumen excesivos recursos de computación que no están a nuestra disposición. Los métodos de filtro dependen de las características intrínsecas de cada variable. Existe una gran diversidad de métodos de filtro. Tienen la ventaja de no convertir este proceso en una caja negra, dándonos la oportunidad de un acceso intuitivo a las razones de la selección. Son los que hemos seleccionado. 48 Hemos seleccionado dos métodos diferentes que nos puedan servir posteriormente para realizar un ranking: la entropía de Shannon y la correlación lineal con el valor de YMRS (Ferreira, 2012). Se ha seleccionado la entropía de Shannon (Shannon, 1948) por ser un método sencillo, objetivo y a priori para hacer un ranking de variables según su relevancia. En el diseño se dudó entre la medición de la entropía y una medida convencional de dispersión como la desviación típica (las variables con más dispersión suelen contener más información relevante) pero se ha elegido finalmente la entropía porque no depende de la distribución de los datos, sirve al mismo tiempo como medida de dispersión y es una medida más general (Bentes, 2012). Su cálculo se ha realizado para todos los casos globalmente, pero también separándolos por pacientes. Esto podrá ayudarnos más adelante a responder a la pregunta de si un modelo adaptado a cada paciente es superior a uno grupal. Para su cálculo se ha seguido la fórmula clásica: La correlación lineal con la variable de interés (YMRS) como método de filtro es una elección más obvia. Esta es la técnica principal en la selección de atributos mediante filtro (Blessie, 2012). Vamos a medirla mediante, dado que el valor de YMRS, como puede apreciarse a simple vista en su histograma (Figura 5) no sigue una distribución normal, al igual que muchas de las variables predictoras. Una mayor correlación nos indica una mayor relevancia de la variable y una mejor capacidad predictiva del YMRS. No hay que olvidar que el uso de la correlación lineal es sólo un ayuda en la selección de la variables. Lo que esperamos es una relación compleja y no lineal entre nuestras variables predictoras y el YMRS. Sin embargo, cuanto mayor sea la correlación lineal, más relacionada estará la variable con la respuesta y por lo tanto más útil será como entrada de un modelo que intente atrapar esta relación no lineal. Podría argumentarse que, dado que hacemos múltiples comparaciones de variables, deberíamos usar la corrección de Bonferroni para evitar valores de p dentro del rango de significación teórico que se debieran al azar (Gómez, 2005). 49 H = Pero el único objeto de medir la correlación es puntuar todas las variables, un indicador de su potencial predictor, que no pretende afirmar que existe una correlación lineal. Por lo tanto no usamos Bonferroni para no perder variables posiblemente útiles. No queremos demostrar correlaciones sino hacer un primer filtro para que los algoritmos tengan más oportunidades de encontrar conocimiento en nuestros datos. Software utilizado El análisis de los datos se ha realizado en el lenguaje de programación R, en su versión R versión 3.5.3 bajo Rstudio 1.3.959 sobre OSX. Además Se han usado las siguientes bibliotecas adicionales: Readxl, Lubridate, Dplyr, Ggplot2, ImputeTS, Scales, Gmodels, Neuralnet, E1071, Stats, Rpart, Rpart.plot y Outliers. El código para los cálculos puede revisarse en el Anexo III. 50 YMRS fre cu en ci a 0 5 10 15 20 0 50 10 0 15 0 20 0 25 0 Figura 5. Histograma de las puntuaciones de YMRS Consideraciones éticas El estudio no ha implicado un cambio en el protocolo habitual de manejo de la enfermedad en la unidad, siendo puramente observacional. Los aspectos bioéticos que se han debido tener en cuenta especialmente son los relacionados con el ámbito de la privacidad. El servidor que ha almacenado la información cumple con todos los estándares de seguridad habituales para este tipo de datos sensibles. Los datos personales son codificados antes de pasar a la fase de proceso. Para garantizar la protección de datos se han disociado los datos de identificación de los datos clínicos. La conexión entre ambos tipos de datos se realiza con un código común. El estudio fue autorizado por el CEIC regional de la Comunidad de Madrid. Se informó a los participantes acerca del proyecto, sus objetivos y las técnicas usadas en él, y se les solicitó el uso de sus datos para el mismo. Recibieron una hoja de información y una pequeña charla en la que se les explicó personalmente los aspectos relevantes. Tras esto, firmaron un consentimiento informado de aceptación de participación en el proyecto. Todos las personas involucradas en el estudio han firmado un compromiso de confidencialidad y se han comprometen a cumplir los requerimientos legales. Se permitieron monitorizaciones, auditorias, todas las revisiones que el CEIC considerara e inspecciones reguladoras relacionadas con el estudio, facilitando el acceso directo tanto a la documentación como a los datos originales. Debilidades del estudio Hay algunas debilidades y sesgos que pueden limitar la validez de nuestros resultados. Una de ellas es que nuestra muestra de pacientes ha recibido psicoeducación siguiendo el programa de Vieta (Colom, 2006) y están dentro de un programa estructurado (ver anexo I). Esto podría hacer los resultados no homologables a otras poblaciones de pacientes, provocando que, por ejemplo, las respuestas al cuestionario fueran de mejor calidad. Existen otros sesgos que no podemos descartar. Aunque hemos estudiado la distribución de aciertos de los algoritmos entre los distintos pacientes, si algunos pacientes fueran más fácilmente predecibles que otros o existieran que pacientes que siempre presentan crisis, los algoritmos podrían predecir más bien el paciente y 51 no el umbral del YMRS, aunque en la evaluación no nos daríamos cuenta. Hay que tener en cuenta que hay pacientes con un gran número de casos y otros que tienen muy pocos, por lo que el análisis individual se hace imposible con nuestros datos. Estos sesgos no pueden descartarse con nuestro estudio ya que, por desgracia, no hay posibilidad de hacer análisis individuales. Probando la agrupación de variables G4A y el algoritmo Rpart (seleccionado por su buen rendimiento) se ha encontrado que del total de los pacientes hay 5 con un porcentaje de aciertos menor de 0,7. No es un dato significativo pero ayuda a despejar esta incógnita. Los pacientes con antecedentes de consumo de sustancias diferentes a tabaco, alcohol, cafeína y cocaína son menos proclives a rellenar el formulario. Esto podría hacer que nuestros resultados no fueran extrapolables a estos pacientes. Otra debilidad es el uso de de escalas Likert para medir el estado de ánimo. Estas medidas tienen importantes objeciones, como las tienen la definición y fronteras de cada una de nuestras variables y su definición concreta. No hemos pretendido convertir a los pacientes expertos fenomenólogos con este formulario. Es más, nos parece complicado incluso para un psiquiatra entrenado el poner líneas netas y diferenciar, si es que es posible, entre estos conceptos y sus distintos niveles. Para cada paciente y para cada evaluador tienen significados diferentes. Sin embargo confiamos en que, al ser siempre el paciente quien mide la variable y normalizarse posteriormente los datos intrapaciente, las diferencias en la intensidad entre unos y otros se minimicen. Pero también puede ser diferente el concepto para cada uno de ellos. ¿Dónde empieza la ansiedad y termina la irritabilidad? Ante las dudas, los pacientes cuentan con el apoyo del psiquiatra, que les asesora. No obstante, no hemos encontrado una solución adecuada para este problema. 52 4.2 Resultados del estudio A En esta sección expondremos los resultados del estudio A. En primer lugar revisaremos la correlación de las diferentes variables derivadas con la puntuación en el YMRS. Después haremos lo propio con la entropía de Shannon. Finalmente resumiremos los resultados obtenidos para cada una de las variables primitivas. Correlación con YMRS Hemos encontrado la existencia de correlación significativa con el valor de YMRS en 49 de las 208 variables estudiadas (Tabla 5) para un valor de p menor de 0,05. Estas correlaciones oscilan entre una r de 0,53 para la irritabilidad media en los diez días anteriores hasta 0,19 en el mínimo en la calidad de sueño en los 10 días más cercanos a la medición de YMRS . Las variables que tienen una correlación con el umbral del YMRS son ánimo, ansiedad, calidad de sueño, concentración, hora de dormir, duración del sueño, hora del test, irritabilidad, motivación y tabaco. No hemos encontrado correlación en ninguna de las variables derivadas de cafeína, cénit del sueño (otra variable derivada) y hora de despertar. 53 Entropía de Shannon La entropía de Shannon nos da información acerca de lo inesperado que es el resultado de una medición, la novedad que nos traslada en cada caso o, dicho de otra forma, la dificultad que tendríamos en predecirlo. Es una medida de la información acerca de la distribución que nos aporta cada medida (Shannon, 1948). En nuestra serie de datos hay variables que tienen una mayor entropía, como por ejemplo la hora a la que se realiza el test. Debemos tener en cuenta que aunque 54 Tabla 5. Correlaciones significativas (p<0.05) de las variables del formulario, ordenadas por valor absoluto de r Variable r p Irritabilidad Media10 0,53 0,000 Irritabilidad Max10 0,51 0,000 Irritabilidad Sd10 0,51 0,000 Irritabilidad Media 0,38 0,000 Dormir Media30 -0,38 0,000 Dormir Media -0,37 0,000 Dormir Media20 -0,36 0,000 horatest Media -0,33 0,001 Irritabilidad Media30 0,33 0,001 horatest Media10 -0,33 0,001 Tabaco Media10 0,32 0,022 Tabaco Max10 0,31 0,027 Ánimo Max20 -0,30 0,004 Duración Max20 -0,30 0,004 Dormir Max20 -0,30 0,004 horatest Media20 -0,29 0,004 Ansiedad Sd20 -0,28 0,006 Irritabilidad Max30 0,28 0,006 Irritabilidad Sd30 0,28 0,006 Dormir Media10 -0,27 0,008 Calidad Media30 0,27 0,005 horatest Media30 -0,26 0,010 Irritabilidad Max 0,26 0,010 Irritabilidad Sd 0,26 0,010 Ansiedad Sd30 -0,26 0,011 Variable r p Ánimo Min10 -0,26 0,013 Irritabilidad Media20 0,26 0,011 Ánimo Media10 -0,25 0,014 horatest Min10 -0,25 0,013 Calidad Media 0,25 0,008 Calidad Min30 0,25 0,009 Concentración Max10 0,25 0,015 Ánimo Sd20 -0,25 0,018 Calidad Media20 0,25 0,009 Ánimo Media20 -0,24 0,019 Calidad Media10 0,24 0,011 Duración Sd20 -0,23 0,022 Dormir Sd20 -0,23 0,022 Ansiedad Min10 0,22 0,029 horatest Max20 -0,22 0,031 Motivación Max20 -0,22 0,035 Ánimo Media -0,22 0,040 Irritabilidad Max20 0,21 0,040 Irritabilidad Sd20 0,21 0,040 Ansiedad Min 0,21 0,040 Concentración Min 0,21 0,043 horatest Sd10 0,21 0,045 Ansiedad Media10 0,20 0,045 Calidad Min10 0,19 0,049 una variable aporte más información, esto no significa necesariamente que esa información sea de utilidad para la predicción. La entropía podemos medirla en el conjunto global de pacientes o de forma individualizada en los datos de cada paciente. Su valor siempre será mayor en los datos globales que en los individuales, descartando la entropía de la variable alcohol, que está artefactadas por la baja frecuencia de su valor positivo. La diferencia entre Shannon individual y Shannon global debería ser mayor en aquellas variables que presenten más a diferencias interindividuales que intraindividuales. Hemos calculado el porcentaje de la entropía individual dentro de la entropía global para visualizar y comparar la importancia de las diferencias interindividuales en cada una de las variables. Es más idiosincrásico de cada individuo el consumo de tabaco y cafeína un porcentaje Shannon/Shannon_individual más bajo, mientras que la irritabilidad y las variables más relacionadas con el ritmo circadiano (dormir, despertar, hora_test, duración_sueño, cenit_sueño) son en general las que muestran una mayor congruencia entre individuos en cuanto a su entropía. Las variables alcohol y otras drogas se han calculado pero no nos son útiles debido a su distribución extrema. Podemos ver los resultados de la entropía de Shannon en la Tabla 6 y en la Figura 4. En la primera columna tenemos la entropía calculada con los datos de todos los pacientes, en la segunda se ha realizado un cálculo individual para cada paciente y después se ha hecho la media de los mismos. La tercera es el porcentaje en el que disminuye la entropía calculada individualmente. 55 Resultados variable a variable A continuación se describen los resultados en cada una de las variables para entender mejor sus implicaciones. Irritabilidad Hay una correlación entre YMRS umbral y la irritabilidad media, su desviación típica (sd) y sus valores máximos calculados para el tramo completo 1-30 pero también en cada una de las decenas. La correlación es claramente más fuerte en los diez días más cercanos a la medición del YMRS. Se trata sin duda de la variable con una mayor correlación con el YMRS, con una r que alcanza más de 0,5 en casi todas las variables en el tramo temporal 1-10 (la única que lo logra), además sigue siendo significativa en el periodo 20 y 30. La variable irritabilidad mantiene una correlación intensa, precoz y que aumenta con la cercanía al episodio. Su sd es alta (0,19). Hay una divergencia importante si la calculamos individualmente, siendo la media de las sd individuales de 0,26. Esto nos señala que los resultados de esta variable son especialmente heterogéneos entre individuos. Su entropía sin embargo es relativamente baja (1,3 Nats grupal y 0,98 la media de Nats en datos individuales). Probablemente se debe a que presenta un valor más homogéneo durante las épocas de estabilidad. Ánimo Hay una correlación negativa en las dos decenas de días más cercanas al YMRS pero no en 21-30. A mayor puntuación de YMRS, más baja es la percepción anímica de los pacientes. Por otra parte hay una importante disparidad entre la desviación típica de los datos individuales y los grupales, lo cual apunta a una gran diferencia interindividual en su distribución. La entropía, al igual que en irritabilidad, es relativamente baja, probablemente por las mismas razones. 56 Ansiedad La media de la ansiedad en los diez días antes del Young se correlaciona positivamente con YMRS al igual que los valores mínimos durante ese periodo. Por otra parte la desviación típica Sd30 y Sd20 lo hace negativamente. En el periodo 11-30 la disminución de la variabilidad se relaciona con un aumento del YMRS. Esta variable presenta al igual que irritabilidad y ánimo una entropía de Shannon relativamente baja. Concentración Los diez días antes de la crisis los pacientes refieren una mejor concentración, aunque la media general en los 30 días antes es menor. Su entropía está en el rango de irritabilidad, ánimo o ansiedad. Calidad de sueño La media de la calidad subjetiva del sueño correlaciona positivamente con el valor de YMRS. Hay que tener cuidado en la interpretación porque en esta variable valores mayores indican una menor calidad de sueño (ver anexo III). Hay correlación en la media total de los 30 días previos, pero al medir separadamente las tres decenas de día, sólo es significativa en el intervalo 21-30. La entropía en este caso es también relativamente baja. Hora de dormir La media de hora de dormir correlaciona negativamente con el YMRS con una r menor a -0,35, tanto en la media total como en las tres decenas por separado. Es una relación robusta y precoz que se mantiene a lo largo de los 30 días. También hay una correlación negativa significativa entre los valores máximos del intervalo 11-20. Esta variable, al contrario que las anteriores, presenta una entropía alta de 4,73 Nats. 57 58 Shannon Sh individual (media) % disminución individual hora_test 9,11 6,09 33,10 % cenitsueno 6,05 4,44 26,71 % duración_sueño 5,71 4,11 28,09 % despertar 5,21 3,58 31,33 % dormir 4,73 3,22 32,00 % tabaco 4,62 1,56 66,30 % cafeina 2,97 1,50 49,66 % motivacion 2,16 1,37 36,40 % animo 1,94 1,24 36,12 % Concentración 1,91 0,97 49,28 % ansiedad 1,69 1,03 38,86 % calidad_sueno 1,53 0,95 37,71 % irritabilidad 1,30 0,98 24,75 % alcohol 0,11 0,11 4,98 % otras_drogas_num 0,00 0,00 35,36 % Tabla 6. Entropía de Shannon grupal, individual y porcentaje entre Shannon y Shannon individual. 0,00 2,50 5,00 7,50 10,00 ho ra _t es t ce ni ts ue no du ra ci ón _s ue ño de sp er ta r do rm ir ta ba co ca fe in a m ot iv ac io n an im o C on ce nt ra ci ón an si ed ad ca lid ad _s ue no irr ita bi lid ad al co ho l ot ra s_ dr og as _n um Shannon Sh individual (media) Figura 4. Gráfico de barras de Shannon y Shannon individual en las diferentes variables Hora de despertar Sorprendentemente no encontramos correlación entre hora de despertar y el YMRS aunque lo esperable sería encontrar una correlación negativa. Al igual que la hora de dormir su entropía es alta. Duración y Cenit Duración y el cenit del sueño son variables derivadas que se calculan a partir de hora de dormir y hora de despertar. Se han generado por si pudieran recoger una información con menos ruido respecto al YMRS que las variables de las que surgen. Sin embargo no hay correlaciones entre ellas y el YMRS, a excepción del una correlación puntual de -0.3 entre la duración máxima del sueño y el YMRS en el periodo 11-20. Su entropía es alta, algo esperable si pensamos que son variables derivadas de las variables hora de dormir y hora de despertar, ambas con altas entropías. Hora del test La media de la hora a la que se realiza el test es otra variable con una importante correlación negativa de alrededor de -0,3. También correlaciona su valor mínimo en la decena más cercana al día de medición del YMRS. Tiene la entropía más alta de todas las variables: 9,11 Nats. Motivación En general las variables derivadas acerca de la percepción del paciente sobre la motivación no correlaciona con el valor de YMRS, con r muy pequeñas y p no significativas. Sólo en el caso del valor máximo de motivación en la franja 11-20 hay un valor significativo. Presenta, al igual que variables como ánimo o ansiedad, una entropía relativamente baja. Cafeína, tabaco, alcohol y otras drogas Ninguna de las variables sobre el consumo de cafeína tiene una correlación significativa. Sin embargo el consumo de tabaco sí correlaciona en la franja temporal más cercana 1-10, con un aumento del consumo medio y un aumento del 59 consumo máximo conforme mayor es el YMRS. Ambas variables tienen una entropía relativamente alta, pero más alta en el caso del tabaco, en línea con su mayor variabilidad. 60 5. Estudio B: análisis exploratorio de diferentes estrategias predictivas En este segundo estudio aplicaremos una diversidad de algoritmos de clasificación sobre diversos subconjuntos de datos. Estos subconjuntos se han seleccionado según los conocimientos adquiridos en el estudio A. Una vez aplicados los algoritmos, mediremos sus resultados y los compararemos. Inicialmente describiremos la metodología adoptada para después enumerar los resultados que hemos obtenido. 5.1 Metodología del estudio B Muestra Usaremos el mismo conjunto de datos compuesto por 3190 observaciones de 18 variables apareadas con 253 mediciones de YMRS referidos en el estudio A entre enero de 2018 y agosto de 2018. Variables Estudio A y estudio B coinciden comparten las variables primitivas y usan el mismo conjunto de datos compuesto por 15 variables de los días previos al YMRS que se ha medido en la consultas. De nuevo se han retirado las variables alcohol y drogas por no tener prácticamente casos positivos y perder de esta forma su capacidad de predicción en nuestra muestra. 61 Análisis Aunque el análisis de las variables en este estudio guarda cierto paralelismo con el estudio A, tiene diferencias significativas que conviene resaltar antes. Las tres más importantes son : 1. En este estudio no usamos el valor numérico de YMRS como objetivo a predecir, sino que vamos a calcular una variable dicotómica verdadero /falso que indicará si la medición del YMRS ha sobrepasado un umbral anormal. Más adelante explicaremos las razones y el método para esto. 2. Las variables derivadas se han generado de una forma ligeramente diferente: hemos añadido algunos estadísticos que tras lo aprendido en el transcurso del estudio A creemos que pueden aportar información extra de cara a la predicción como son la varianza y la mediana. También se han calculado las diferencias entre los valores medios de cada paciente para cada uno de los estadísticos y el valor del periodo estudiado. 3. La ventana temporal de cálculo se ha condensado a sólo una semana, con un periodo ciego pre-test de una semana más. Es decir, hemos escogido los días comprendidos entre el 14 y el 7, teniendo como objetivo de predicción el día 0. A continuación vamos a explicar detalladamente el análisis y las razones por las que se ha decidido este tipo de metodología: Generación de las variables derivadas Partiendo de las 13 variables primitivas, se han generado estadísticos derivados. En este caso se ha calculado media, desviación típica, varianza, mediana, máximo y mínimo para el intervalo temporal de estudio. También se han calculado estos mismos estadísticos para los datos completos de cada paciente (todos los datos que conservamos del mismo). Esto nos ha permitido calcular la diferencia entre los datos totales de cada paciente y los del intervalo en concreto (variables a las que hemos puesto el sufijo resta). Por ejemplo: la variable ansiedad resta media se corresponde con la media de la respuesta de cada paciente durante el intervalo de estudio menos la media de los datos de la respuesta de ese mismo paciente a la pregunta ansiedad durante todo el periodo de estudio. Esto nos aporta una información que nos muestra los cambios de ese paciente sobre la línea 62 habitual de respuestas del mismo. Se han generado de esta manera 156 variables (Tabla 7). Esto ha dado lugar un conjunto de datos formado por 238 valores de YMRS umbral (verdadero/falso) y sus 156 variables derivadas asociadas. A cada uno de estos conjunto de un valor YMRS con 168 variables derivadas lo llamamos caso. Cada caso contiene información de un único paciente. Describiremos ahora la transformación que se ha hecho de las variables derivadas para construir un conjunto de datos adecuado para el aprendizaje automático. A continuación explicaremos la estrategia de entrenamiento de los media total sd total máx total min total mediana total varianza total resta máx resta min resta mediana resta media resta varianza pendiente ánimo media total ánimo sd total ánimo máx total ánimo min total ánimo mediana total ánimo varianza total ánimo resta máx ánimo resta min ánimo resta mediana ánimo resta media ánimo resta varianza ánimo pendiente ánimo ansiedad media total ansiedad sd total ansiedad máx total ansiedad min total ansiedad mediana total ansiedad varianza total ansiedad resta máx ansiedad resta min ansiedad resta mediana ansiedad resta media ansiedad resta varianza ansiedad pendiente ansiedad irritabilid ad media total irritabilidad sd total irritabilid ad máx total irritabilidad min total irritabilida d mediana total irritabilida d varianza total irritabilida d resta máx irritabilida d resta min irritabilida d resta mediana irritabilida d resta media irritabilida d resta varianza irritabilida d pendiente irritabilida d concentr acion media total concentraci on sd total concentr acion máx total concentra cion min total concentra cion mediana total concentra cion varianza total concentra cion resta máx concentra cion resta min concentra cion resta mediana concentra cion resta media concentra cion resta varianza concentra cion pendiente concentra cion tabaco media total tabaco sd total tabaco máx total tabaco min total tabaco mediana total tabaco varianza total tabaco resta máx tabaco resta min tabaco resta mediana tabaco resta media tabaco resta varianza tabaco pendiente tabaco cafeina media total cafeina sd total cafeina máx total cafeina min total cafeina mediana total cafeina varianza total cafeina resta máx cafeina resta min cafeina resta mediana cafeina resta media cafeina resta varianza cafeina pendiente cafeina dormir media total dormir sd total dormir máx total dormir min total dormir mediana total dormir varianza total dormir resta máx dormir resta min dormir resta mediana dormir resta media dormir resta varianza dormir pendiente dormir desperta r media total despertar sd total despertar máx total despertar min total despertar mediana total despertar varianza total despertar resta máx despertar resta min despertar resta mediana despertar resta media despertar resta varianza despertar pendiente despertar motivaci on media total motivacion sd total motivacio n máx total motivacion min total motivacio n mediana total motivacio n varianza total motivacio n resta máx motivacio n resta min motivacio n resta mediana motivacio n resta media motivacio n resta varianza motivacio n pendiente motivacio n calidad_ sueno media total calidad_sue no sd total calidad_s ueno máx total calidad_su eno min total calidad_s ueno mediana total calidad_s ueno varianza total calidad_s ueno resta máx calidad_s ueno resta min calidad_s ueno resta mediana calidad_s ueno resta media calidad_s ueno resta varianza calidad_s ueno pendiente calidad_s ueno duracion sueno media total duracionsue no sd total duracion sueno máx total duracionsu eno min total duracions ueno mediana total duracions ueno varianza total duracions ueno resta máx duracions ueno resta min duracions ueno resta mediana duracions ueno resta media duracions ueno resta varianza duracions ueno pendiente duracions ueno cenitsue no media total cenitsueno sd total cenitsuen o máx total cenitsueno min total cenitsuen o mediana total cenitsuen o varianza total cenitsuen o resta máx cenitsuen o resta min cenitsuen o resta mediana cenitsuen o resta media cenitsuen o resta varianza cenitsuen o pendiente cenitsuen o horatest media total horatest sd total horatest máx total horatest min total horatest mediana total horatest varianza total horatest resta máx horatest resta min horatest resta mediana horatest resta media horatest resta varianza horatest pendiente horatest Tabla 7. Variables generadas. 63 algoritmos, después describiremos los algoritmos que vamos a ensayar y sus características y por último detallaremos algunos aspectos relevantes del diseño como los criterios de selección de las variables de entrada del modelo o la elección del punto de corte para el YMRS. Transformación de los datos Hay diversas decisiones de diseño en el análisis de los datos con repercusiones importantes que pasamos a describir: 1. Se han descartado las mediciones demasiado cercanas al día de la prueba YMRS, guardando un periodo ciego de 7 días entre la medición del Young y los datos que entrenan al algoritmo. La razón es que el objetivo final de nuestro estudio es clínico, buscamos una futura aplicación. Detectar variaciones en el formulario en los días contiguos al cambio afectivo es posible, incluso probablemente más sencillo, pero tiene poca utilidad clínica. Creemos que una semana de margen nos daría un tiempo mínimo para tomar medidas efectivas en el caso de predecir un episodio maníaco. 2. Se ha limitado la amplitud temporal de la ventana de datos. Se debe a que en la realidad esos datos rara vez están disponibles. Por eso, en vez de la ventana de 30 días que se usó en el estudio A, hemos estrechado la ventana de datos a una semana. Aunque le damos menos información al algoritmo, haciendo más difícil su tarea, nos permite predecir con menos datos. Y eso es lo que probablemente tengamos en un entorno clínico. Dada la parcial adherencia de los pacientes a completar el formulario, esta limitación supone una ventaja en su uso real. 3. Hemos decidido que la tolerancia ante los datos no completados sea de 2. Es decir, los algoritmos sólo analizaran los casos en los que exista un mínimo de 5 días de datos completados en una semana. Al hacer esta restricción, hemos pasado de un total de 1222 mediciones YMRS que podríamos haber estudiado a tan solo 238. Hay valores de YMRS de los que podemos derivar un caso (por la buena calidad de los datos de los formularios previos) y otros de los que no (cuando los pacientes no hay usado suficientemente el formulario en los días previos). Podría existir un sesgo si se produjera el fenómeno de que los pacientes que no rellenan el formulario correctamente tuvieran tendencia a presentar un estado afectivo determinado. Para valorar esta posibilidad se ha estudiado la diferencia en las 64 medias de los valores de YMRS, mediante el test de Wilcoxon (Gómez, 2005), dado que el YMRS no sigue una distribución normal, como hemos visto anteriormente . Según esta prueba no hay diferencias significativas entre los valores medios de YMRS de los pacientes que rellenan suficientemente el formulario con los valores medios de YMRS de los pacientes que no lo rellenan suficientemente (p = 0.861399) por lo que podemos descartar razonablemente este sesgo. Tras hacer estos ajustes, de los 238 valores iniciales, la muestra de casos posibles se ha reducido a 151 casos, pertenecientes a 23 pacientes. Esta gran cantidad de variables podría suponer un problema en el momento de aplicar los algoritmos de aprendizaje automático, por lo que intentaremos seleccionar las variables más interesantes, descartando otras para mejorar el rendimiento de los algoritmos, ya que podría ocurrir que el uso de todas ellas produjera un exceso de redundancia, lo que llevaría a una tasa de ruido/señal más alta que dificultaría a los algoritmos adaptativos encontrar las mejores soluciones. Estrategia de entrenamiento Los algoritmos de aprendizaje automático que vamos a utilizar son adaptativos, es decir, necesitan ser entrenados con datos reales. Para ello se les alimenta por una parte con las variables predictoras y por otra con el resultado esperado, en este caso una variable dicotómica que señala si se ha sobrepasado el valor límite de YMRS a la que llamamos YMRS umbral. Por diferentes procedimientos los algoritmos aprenden a resolver el problema matemático de la predicción del YMRS umbral con diferente calidad. Toda la estrategia de selección y entrenamiento irá dirigida a maximizar la sensibilidad de la prueba, siendo secundaria la especificidad de la misma pensando en una futura utilidad clínica de estos algoritmos: en el trastorno bipolar nos interesa la detección precoz, poder avisar al paciente y a su médico lo antes posible del riesgo de aparición de una crisis. La especificidad es secundaria porque, una vez alertado, será necesario el corroborar clínicamente el cambio de conducta para cualquier tipo de actuación. Una de las decisiones que más repercusión tienen en este proceso de análisis es si vamos a entrenar a los algoritmos con todos los datos disponibles o crearemos un modelo predictivo individualizado para cada paciente. La ventaja de usar todos los datos disponibles es que dispondremos de un mayor número de datos, por lo que 65 nuestros algoritmos tendrán más información de la que aprender. Éste es un factor decisivo para el éxito de cualquier modelado. La desventaja es que, según las conclusiones del estudio A, es probable que los pacientes presenten patrones diferentes en las variables predictoras. Por ejemplo: tendremos pacientes que se despertarán más temprano en los días previos a un YMRS positivo, mientras que otros no notarán cambios en la hora de inicio del sueño. Formar un conglomerado con esta manifiesta heterogeneidad disminuirá la capacidad de aprendizaje de los algoritmos que se verán forzados a buscar una solución global, y por la tanto más ineficiente, ante patrones diferentes. Aunque nos hubiera gustado realizar un análisis individualizado y entrenar separadamente los algoritmos con los datos segregados por pacientes, ha sido imposible debido que no tenemos la cantidad de datos necesarios para este tipo de estudio. Nos hemos visto obligados a realizar un estudio global, que sin duda será menos sensible que un estudio individualizado. Una segunda decisión es elegir el algoritmo que mejor modele el tipo de datos al que nos enfrentamos. Existen una gran variedad de algoritmos pero no podemos usarlos todos. El tipo de datos a analizar (numéricos, cualitativos, ordinales…) es un primer factor limitante. Nuestros datos son numéricos y se han normalizado a valores positivos entre 0 y 1, ya que así se nos abre un mayor abanico de posibilidades en la elección del algoritmo. Por otra parte la variable predictiva es cualitativa dicotómica (verdadero/falso), lo cual también limita los algoritmos que podemos usar. De entre todos los algoritmos posibles, cada uno de ellos se enfrenta mejor a determinados tipos de problemas. No obstante, al final es necesario probar con datos reales para saber cuál tiene un mejor desempeño en cada caso concreto. Sabiendo todo esto, usaremos una estrategia clásica en la técnica de aprendizaje automático que es ensayar con los principales algoritmos de cada grupo para seleccionar el que ofrezca un mejor rendimiento. Pero al usar cada uno de los algoritmo, debemos tomar una tercera decisión. Cada algoritmo tiene diferentes parámetros que ayudan a ajustar su funcionamiento y a adaptarlo al problema específico al que se enfrenta. Este ajuste tiene más de arte que de ciencia y requiere de una gran experiencia. Una manera de enfrentar el ajuste de parámetros que no tiene nada que ver con el arte es la fuerza bruta: actualmente tenemos acceso a una potencia de procesamiento suficiente como para calcular todas las soluciones de los algoritmos con una variedad de parámetros. Por lo tanto podemos enfrentar a cada algoritmo con el problema a 66 modelar de forma repetida ensayando cada uno de los conjuntos de parámetros y seleccionar el que mejor prediga el resultado. Ésta ha sido nuestra elección. Cada vez que hagamos un entrenamiento con cada uno de los algoritmos (y a su vez con cada uno de los subconjuntos de parámetros) deberemos compararlo con datos reales para medir el rendimiento del modelo. Pero no podemos medir el rendimiento con los mismos datos que han servido para entrenar el algoritmo, ya que se produce un fenómeno llamado sobreajuste. El sobreajuste consiste en que el algoritmo no aprende sobre las características abstractas de los datos sino sobre sus características concretas, por lo que los resultados no son generalizables a otras muestras. Para evitarlo, la evaluación del algoritmo debe hacerse siempre con datos diferentes a los usados para entrenarlo. Para ello en cada prueba se selecciona aleatoriamente un porcentaje del conjunto de datos (el 80% en nuestro caso) que se usan en el entrenamiento y a los que llamamos datos de entrenamiento. El algoritmo entrenado se usa para predecir el 20% de los datos restantes, datos con los que el algoritmo no ha tenido contacto previo y a los que llamamos datos test. Esto conlleva nuevos problemas: como el número de casos test es bajo, el resultado del algoritmo dependerá en un determinado grado del azar. Habrá muestras aleatorias que darán mejores resultados porque son más informativas o simplemente por casualidad. Para minimizar este efecto, hemos entrenado los algoritmos con diferentes conjuntos de datos de forma repetida. En cada uno de estos entrenamientos se selecciona al azar un 80% de los datos y se prueba en el 20% restante. Hemos realizado más de 1000 ensayos aleatorios en cada grupo de variables. En cada ensayo calculamos la sensibilidad y la especificidad en el 20% de los datos seleccionados aleatoriamente para este fin. Los resultados de sensibilidad y especificidad serán diferentes según la selección al azar de conjunto de datos de entrenamiento y el conjunto de datos de test, por lo que para tener un resultado que nos informe adecuadamente calcularemos la media de estas medidas para cada par grupo de variables / algoritmo. Posteriormente compararemos mediante un test t de Student los resultados medios de nuestros algoritmos con los resultados medios de dos predictores control: el predictor zerorule y un predictor aleatorio. El algoritmo zerorule es un clasificador básico que siempre predice la clase más frecuente (Devasena 2011, Wahbeh 2011) en este caso predice por lo tanto la no 67 superación del umbral de la escala de Young. El algoritmo zerorule suele usarse como base comparativa para medir la potencia predictora de un algoritmo. No obstante, en nuestro caso nos interesa el resultado en sensibilidad. Debido a su naturaleza, el algoritmo zerorule tiene valores ínfimos de sensibilidad, por lo que no es un adversario suficiente en este caso. Por eso hemos programado el predictor aleatorio, que realiza predicciones al azar en la misma proporción que las que se producen en la muestra. Aunque enfrentaremos tanto zerorule como el predictor aleatorio para medir el desempeño de nuestros algoritmos, nuestra referencia más importante será el predictor aleatorio. Esto se debe a que nuestro objetivo final sería desarrollar una prueba de alarma ante una crisis por lo que nos interesaría altos valores de sensibilidad. En este aspecto el predictor aleatorio es más exigente que zerorule. Algoritmos usados en el ensayo De entre los algoritmos de aprendizaje automático, hemos seleccionado varios para nuestro ensayo. Al tratarse de un problema de clasificación, nos hemos limitado a los algoritmos diseñados para responder a este tipo de preguntas. No se ha pretendido ser exhaustivo, sino solamente elegir algunos de los algoritmos de clasificación más básicos, escogiendo un representante clásico de cada uno de los grupos principales de algoritmos existentes. Se han evitado aquellos cuya complejidad de implementación era demasiado alta para nuestros medios, como por ejemplo los algoritmos de aprendizaje profundo, aunque son opciones a tener en cuenta de cara al trabajo futuro. Finalmente se han seleccionado Naïve Bayes, el algoritmo K vecinos cercanos (KNN), las máquinas de vectores de soporte (SVM), redes neuronales artificiales con retropropagación, la regresión logística y, como representante de los árboles de decisión, el algoritmo Rpart. A estos se han añadido el algoritmo zerorule y el algoritmo aleatorio con fines únicamente comparativos (Saravanan, 2018; Dey, 2016; Lantz, 2019). El funcionamiento de cada uno de estos algoritmos es complejo. Para comprenderlo en su totalidad se requieren profundos conocimientos matemáticos, no obstante para su uso en nuestro proyecto es suficiente el entender los fundamentos de cada uno de ellos. Paso a describirlos: 68 Redes neuronales artificiales con retropropagación Se trata de un antiguo algoritmo de inspiración biológica que intenta imitar el procesamiento de la información en el sistema nervioso central. Las redes neuronales artificiales, que tienen como antecesor al perceptrón y al perceptrón multicapa, son la base de modelos mucho más avanzados como el aprendizaje profundo. Los modelos de redes neuronales se componen de “neuronas artificiales” o perceptrones. Estas neuronas son entidades lógicas se organizan clásicamente por capas, formando estructuras laminadas que constituyen una red con una entrada de datos y una salida. Cada unidad neuronal recoge varios valores de entrada de la capa superior (o en el caso de la primera capa, de la entrada externa) los suma y les aplica una función. El resultado es transmitido al siguiente nivel. Según la metáfora biológica, los valores de entrada serían las entradas de información a través de las dendritas y la salida querría emular al potencial de acción a través del axón. Naturalmente no es un modelo que quiera simular una neurona real, pero sí recoge aspectos básicos del funcionamiento del sistema nervioso. Inicialmente los parámetros que gobiernan las funciones de cada red neuronal se determinan al azar, en una especie de tabula rasa. Para que la red neuronal aprenda, será necesario enfrentar esta red virgen con patrones de entrada de forma repetitiva. Ante cada patrón problema, la red dará una respuesta (determinada por esos parámetros iniciales o pesos de la red). Al principio la red nos dará respuestas azarosas y por lo tanto casi siempre erróneas. Sin embargo, con cada acierto o fallo se reconfigura la red para mejorar su resultado posterior, es decir, para aprender. Una forma clásica de llevar a cabo este aprendizaje es el algoritmo de retropropagación del error (retropropagación). Este algoritmo calcula para cada respuesta equivocada la contribución a ese error que ha tenido cada una de las neuronas de la red. Con esos datos se modifican los parámetros de las neuronas de forma proporcional a la causa que han tenido en el cálculo erróneo. Es decir, el error de salida se propaga hacia atrás, en cada una de las capas de neuronas según la contribución relativa al error de cada perceptrón. Esta secuencia de aprendizaje se repite innumerables veces, mejorando el desempeño de la red de forma progresiva, hasta que ésta alcanza un equilibrio (Freeman, 1993). 69 Una importante debilidad de esta aproximación es que nos da como resultado un modelo tipo caja negra: la red aprende y es capaz de predecir pero el modelo se encuentra oculto, tejido en la red neuronal, por lo que no nos aporta conocimiento teórico inteligible. K vecinos cercanos (KNN) El algoritmo KNN toma como punto de partida patrones de los que conocemos el resultado (etiquetados) y patrones con resultado desconocido (no etiquetados). Su predicción se basa en etiquetar los patrones desconocidos asignándoles la etiqueta de los ejemplos etiquetados más parecidos. Para encontrar los patrones más parecidos entiende cada caso o patrón como un punto perteneciente al espacio de fases compuesto por las variables predictoras. La similitud entre unos casos u otros dependerá de la distancia entre estos vectores, asignando a cada vector no etiquetado la categoría del caso conocido más cercano, de ahí su nombre. En concreto el algoritmo KNN suele utilizar usualmente la distancia euclidiana. En los algoritmos de clasificación KNN no se produce abstracción ni generalización. Este tipo de algoritmos no está realmente aprendiendo nada, sólo almacena los datos de forma literal. Como no se construye un modelo, se dice que KNN tiene un aprendizaje no paramétrico ya que no genera parámetros sobre la información (no hay abstracción). Esto limita nuestra capacidad de entender cómo funciona el clasificador (Cover, 1967). Naïve Bayes Es un algoritmo que se basa en el aprendizaje probabilístico, en concreto en el teorema de Bayes. Los métodos bayesianos son capaces de usar todos los datos para llegar a predicciones sutiles, aunque de una forma un poco simple. Naïve Bayes funciona bien cuando se trata de sumar pequeños efectos de forma lineal para explicar un gran efecto. Se dice que es naif o ingenuo porque toma como punto de partida que las variables predictivas son independientes entre sí e igualmente importantes. Estas dos condiciones son infrecuentes en la naturaleza. En concreto son dos condiciones que claramente no se dan en nuestros datos, pero lo hemos seleccionado porque puede funcionar bien en muchas ocasiones aunque se violen sus dos condiciones de uso. 70 Su forma de generar una predicción es bastante sencilla. Primero calcula las probabilidades condicionales de cada predicción para cada valor de cada variable (por ejemplo: cuál es la probabilidad de tener un valor por encima del umbral en YMRS en el caso de que la irritabilidad media en los el periodo 10-20 sea de 3). Después, para cada caso a predecir, combina siguiendo el teorema de Bayes las diferentes probabilidades condicionales lo cual da como resultado una probabilidad para cada posible predicción. La opción con una mayor probabilidad es la que da como respuesta. Recursive Partitioning and Regression Trees (Rpart) Rpart es un algoritmo del grupo de los ‘árboles de decisión’. La estrategia de este tipo de algoritmos consiste en dividir los datos en grupos cada vez más pequeños para identificar patrones que puedan utilizarse para la predicción. El conocimiento se presenta entonces en forma de estructuras lógicas que pueden ser comprendidas sin ningún conocimiento estadístico. Los algoritmos de árboles de decisión construyen de manera automática un modelo en forma de estructura de árbol en los que cada ramificación se corresponde con una decisión lógica que depende del valor de una de las variables predictoras. Tras varias ramificaciones, el recorrido por el árbol termina en un hoja o nodo terminal, que contiene la predicción propiamente dicha. El algoritmo busca la variable y el umbral de la misma que mejor separa a los casos en las diferentes categorías. Agrupa los datos según este umbral y obtiene dos grupos a los que aplica de forma recursiva este mismo procedimiento hasta que es imposible encontrar una mejor separación. Una gran ventaja de este tipo de algoritmos es que nos presenta el conocimiento y su mecanismo de funcionamiento de forma clara e inteligible y no como una caja negra, por lo que aportan abstracción y conocimiento teórico. 71 Máquinas de vectores de soporte (SVM y SVM radial) Las SVM parten de una representación de los casos como puntos pertenecientes a un espacio de fases de tantas dimensiones iniciales como variables predictoras. El algoritmo busca un hiperplano que separa los diferentes puntos en grupos de igual clase. Este hiperplano se define como el vector entre los dos puntos más cercanos de clases diferentes (para un caso dicotómico como el nuestro) al que se llama vector soporte. Cuando los casos no etiquetados se sitúan en el espacio, son clasificados según su situación espacial con respecto al hiperplano. Es decir, la SVM construye un hiperplano o conjunto de hiperplanos en un espacio de dimensionalidad muy alta que separan el espacio de fases en diferentes áreas que se corresponden con la categorización que buscamos. Cuando no existe un hiperplano que sea capaz de separar los territorios del espacio de fase de forma adecuada (se dice que las clases no son linealmente separables) hay variaciones del algoritmo que puede añadir dimensiones al espacio de fases mediante el uso de las llamadas funciones kernel. Con esta metodología tenemos más posibilidades de encontrar un hiperplano que nos sea útil, permitiendo pasar de una clasificación lineal a funciones sigmoides, de base radial o polinomiales, entre otras. En una revisión inicial de los resultados del algoritmo SVM observamos que la distribución de los resultados del algoritmo SVM era muy dependiente de un parámetro (función kernel). Si no usábamos funciones kernel, SVM separaba linealmente los puntos y sus resultados eran débiles, sin embargo, si usábamos funciones kernel, especialmente con una función radial, los resultados eran mucho mejores. Cuando nos referimos a los resultados SVM, por ese diseño inicial de fuerza bruta que hemos comentado, tenemos una media de los resultados de SVM con una función kernel al azar (incluyendo SVM lineal). Hemos rehecho los cálculos de forma individual para SVM con función radial, por lo que tenemos resultados para SVM con la media de resultados de los diferentes kernel (SVM) y un resultado disgregado para la función kernel radial (SVM radial). Regresión logística múltiple La Regresión Logística es otro método estadístico sencillo que nos permite predecir una variable cualitativa binaria. No es el método más adecuado para explicar relaciones complejas y no lineales como las que esperamos en nuestro caso, lo hemos incluido para ver su desempeño y poder comparar con el resto de 72 https://es.wikipedia.org/wiki/Hiperplano https://es.wikipedia.org/wiki/Dimensi%C3%B3n algoritmos. En este caso esperamos además de moderados a altos valores de multicolinealidad entre las variables predictoras, lo cual probablemente va a restar eficacia a esta aproximación. Zerorule El algoritmo zerorule es un método de clasificación muy simple que predice el valor de los casos según el valor más frecuente. Por ejemplo: si en la muestra de entrenamiento el 70% de los casos son clasificados como negativos, el algoritmo zerorule clasificará todos los casos a predecir como negativos. Se usa sólo como comparador. En el problema que nos ocupa pretendemos predecir una situación poco frecuente por lo que su rendimiento en cuanto a sensibilidad es nulo, ya que siempre va a predecir todos los casos como negativos, por lo que no supone un buen comparador. Algoritmo aleatorio El algoritmo aleatorio da un valor aleatorio a los casos por clasificar. Sin embargo sólo le permitimos dar un valor positivo en la misma proporción que los datos de la muestra de entrenamiento. Esto hace que sus puntuaciones en sensibilidad sean mayores que el zerorule y nos sirva como base de lo que la predicción al azar puede conseguir. Los resultados que, de forma estadísticamente significativa, superan al algoritmo aleatorio, deben entenderse como no explicables por el azar. Selección de variables Un exceso de variables de entrada puede empeorar los resultados de un modelo, especialmente cuando sospechamos que añaden información redundante, algo que sin duda sucede en nuestro conjunto de datos. Esto puede comprobarse claramente analizando el diagrama de correlación de las variables predictoras (Figura 2). Como puede verse, varias tienen coeficientes de correlación altos. Es lo esperable por muchos motivos. Por ejemplo: las distintas medidas de sueño dependen muchas veces unas de otras ya que el despertarse pronto implica en general una menor cantidad de horas de sueño. También el consumo de cafeína disminuye el sueño y la ansiedad y la irritabilidad están relacionadas en muchos pacientes. 73 Con cada variable extra que añadimos aportamos al mismo tiempo ruido y señal. El ruido empeora los resultados, pero cuanta más señal recoja nuestro modelo, mejores predicciones podrá producir. Es importante por lo tanto seleccionar las variables que aporten más conocimiento y evitar aquellas que introduzcan más información redundante o añadan más ruido. A esta práctica se le llama selección de atributos. Las estrategias generales para la selección de atributos pueden englobarse en tres grandes métodos: wrapper, asociados al algoritmo, de filtro y métodos híbridos (Alelyani et al., 2018). - Wrapper: consiste en computar todas las posibles agrupaciones del variables para así saber cuáles son las más eficientes. Consumen excesivos recursos de computación. - Asociadas al algoritmo: estudian los resultados en relación con los resultados directos del algoritmo. Consisten en probar de forma secuencial subconjuntos de variables, eligiendo posteriormente el subconjunto que dé mejores resultados. Tienen más problemas de sobreajuste cuando hay escasez de datos (como en nuestro caso). - Métodos de filtro: dependen de las características intrínsecas de cada variable. Son por lo tanto independientes del algoritmo. Existe una gran diversidad de métodos de filtro. Podemos usar medidas como la desviación típica o la varianza, ya que es esperable que las variables con mayor dispersión o con mayor varianza contengan más información relevante. También podemos filtrar las variables según la correlación lineal que tengan con la variable resultado. O podemos estudiar las relaciones entre las variables mediante diferentes algoritmos de agrupación. - Métodos híbridos: Son aquellos que usan primero un método de filtro y después con las variables seleccionadas usan un método wrapper. Dada las características de nuestros datos, hemos seleccionado filtrar las variables. Una de las razones más importante para esta elección es que no queríamos convertir el proceso en una caja negra, eligiendo variables sin saber exactamente las razones. 74 La selección de variables es un paso trascendental que determina el éxito o el fracaso de cualquier modelo. Nos interesa limitar el número de variables de entrada al mínimo para que el ratio señal/ruido de la información de entrada sea óptimo, pero eso requiere seleccionar las variables que porten más información relevante. Para ello hemos seleccionado dos medidas: la entropía y la correlación lineal , calculadas en el estudio A, pero no sabemos a priori cuál de ellas puede ser más relevante para el éxito del modelo. Podemos filtrar las variables según la entropía, según la correlación o según ambos criterios. Como desconocemos cuál es la mejor manera, realizaremos el entrenamiento del modelo de las tres formas diferentes y luego compararemos sus resultados. Vamos a seleccionar: 1. Grupo 1: Integra a las variables que tienen una entropía por encima de la media (mayor de 4.01). Como la entropía sólo se calcula sobre variables reales (no derivadas) esto seleccionará a grupos de variables derivadas. Hemos decidido seleccionar la entropía de la media total por parecernos representativa. Las variables del grupo 1 serán por lo tanto: - hora_test media - lentitud media - cenitsueno media - duración_sueño media - despertar media - dormir media - Tabaco media 2. Grupo 2: Formado por las variables que tienen una correlación mayor que la media (0.28) siempre que p sea mayor a 0.05. Este grupo lo integran: - Irritabilidad Media10 - Irritabilidad Sd10 - Irritabilidad Max10 - Irritabilidad Media - Dormir Media30 - Dormir Media - Dormir Media20 - horatest Media - Irritabilidad Media30 - horatest Media10 - Tabaco Media10 - Lentitud Max10 - Tabaco Max10 75 - Ánimo Max20 - Dormir Max20 - Duración Max20 - horatest Media20 3. Grupo 3: En el encontramos las variables con una correlación mayor que la media, pero que además tienen una entropía de Shannon mayor que la media (4.01). Serán las siguientes: - Dormir Media30 - Dormir Media - Dormir Media20 - horatest Media - horatest Media10 - Tabaco Media10 - Lentitud Max10 - Tabaco Max10 - Dormir Max20 - Duración Max20 - horatest Media20 - Dormir Media10 - horatest Media30 - horatest Min10 - Calidad Media 4. Grupo 4: Dado que la ventana de datos que tomamos es 7-14, hemos hecho un grupo seleccionando sólo las variables en las que la correlación lineal era alta en ese intervalo, como los intervalos medidos en el estudio a son 0-10, 10-20 y 20-30, hemos seleccionado el intervalo 10-20 como aproximación. Con filtro temporal hemos generado dos grupos: el grupo 4A con las variables significativas de ese intervalo con una correlación mayor que la media y el grupo 4B con una correlación mayor que la media y una entropía mayor que la media también. Estos dos grupos quedarían de la siguiente manera: 4A - irritabilidad max - dormir max - duración max - animo max - horatest media - dormir media - calidad media - irritabilidad media - irritabilidad sd - ansiedad sd 76 4b - dormir max - duración max - horatest media 5. Grupo 5: Por último queríamos comprobar qué resultados obtendríamos si no hiciéramos ningún tipo de filtro en las variables. El grupo 5 las contiene todas las variables en sus diversas variaciones: media, sd, max y min (ver Tabla 7). Punto de corte para la predicción Un factor importante para el diseño del modelo es la selección del punto de corte del YMRS a partir del cual se considerará que una medición rebasa el umbral de alarma. Aunque inicialmente Young proponía 12.5 como punto de corte para un diagnóstico de manía, lo usual en la detección de reagudizaciones es tomar valores más bajos, para incluir las hipomanías. En nuestro caso ha sido necesario adaptar el punto de corte a la población con la que trabajamos, un grupo de pacientes ya diagnosticados con una enfermedad grave y con historia de descompensaciones importantes. También se ha tenido en cuenta el objetivo final del estudio: hemos primado tener una mayor sensibilidad ante pequeñas alteraciones en el ánimo ya que el horizonte final es conseguir una predicción precoz de la descompensación. Además si el modelo funcionara correctamente, su función sería actuar como un cribado para alertar al clínico, por lo que debemos sacrificar cierta especificidad para conseguir mayor sensibilidad. Al estudiar la frecuencia de las diferentes puntuaciones en nuestra población, hemos visto como las puntuaciones YMRS por debajo de 5 incluyen el 95% de las observaciones en las que el diagnóstico clínico no incluye sintomatología maníaca, es decir, entra dentro de la eutimia o síndrome depresivo sin sintomatología maníaca (no episodios mixtos). Esa es la razón por la que hemos seleccionado el punto de corte para YMRS en 5. Cifras de 6 y superiores suponen por lo tanto un caso positivo, es decir, un caso a predecir para nuestro modelo. Revisando la bibliografía hemos encontrado cómo otros autores llegan a soluciones iguales o similares (Ortiz, 2014; MacQueen, 2003). En nuestra experiencia clínica con la población de pacientes de UBIP, las desviaciones menores (por encima de 5) en el YMRS son casi siempre la señal que precede al inicio de una descompensación. El YMRS en nuestra población prácticamente nunca sube en 77 exceso (Figura 5), siendo nuestro máximo registro 22 ya que son pacientes estabilizados y con un seguimiento muy estrecho, por lo que se les ajusta el tratamiento en cuanto comienza una leve hipomanía y se suelen abortar las crisis. Software utilizado El análisis de los datos se ha realizado en lenguaje de programación R, en su versión R versión 3.5.3 bajo Rstudio 1.3.959 sobre OSX. Además Se han usado las siguientes bibliotecas adicionales: Readxl, Lubridate, Dplyr, Ggplot2, ImputeTS, Scales, Gmodels, Neuralnet, E1071, Stats, Rpart, Rpart.plot y Outliers. El código para los cálculos puede revisarse en el Anexo III. Consideraciones éticas El estudio no ha implicado un cambio en el protocolo habitual de manejo de la enfermedad en la unidad, siendo puramente observacional. Los aspectos bioéticos que se han debido tener en cuenta son exactamente los mismos que los reseñados en el estudio A. Debilidades del estudio Aquí deberían incluirse en primer lugar todas las debilidades del anterior estudio, ya que no hay cambios en la recogida de datos y la muestra. Pero habría que añadir además una debilidad adicional relacionada con el análisis de los datos: la consulta en la que se mide el YMRS se produce de manera arbitraria. Eso implica que cuando medimos el YMRS no sabemos si se encuentra en un punto máximo, mínimo o intermedio, sólo tenemos un valor puntual que no da información real acerca de la dinámica. Aunque luego transformamos ese valor mediante un umbral, no hay que olvidar cómo se llega a este resultado. No estamos prediciendo realmente crisis, sino que el YMRS esté por encima de un umbral. 78 5.2 Resultados del estudio B Se han realizado un total de 11532 ensayos aleatorios con diferentes grupos de variables, superándose ampliamente nuestra intención de realizar más de 1000 ensayos por grupo. En concreto se han realizado: - 2055 ensayos válidos con el grupo 1 - 2537 ensayos válidos con el grupo 2 - 2541 ensayos válidos con el grupo 3 - 2459 ensayos válidos con el grupo 4A - 1990 ensayos válidos con el grupo 4B Las diferencias en el número de ensayos son debidas a que en algunas ocasiones la selección al azar de variables da resultados no válidos para determinados algoritmos. Un ejemplo puede ser el intentar entrenar un algoritmo con una muestra en la que por azar no hay ninguna crisis o hay una variable predictora que es constante. Esto da un error y el ensayo no es válido. El grupo 1 y el grupo 4B tiene una mayor probabilidad de errores de este tipo, por lo que la cantidad de ensayos válidos es menor. 79 Resultados por grupos de variables Los resultados medios de los distintos ensayos que combinan las diferentes agrupaciones de variables frente a los algoritmos podemos verlos en la Tabla 8. Las combinaciones de variables que consiguen mejores resultados predictivos en sensibilidad son G4A y G5. Cada una de estas combinaciones consigue 4 de las 10 primeras posiciones en la tabla de clasificación. Los buenos resultados de G5 nos dan una idea de la potencia de algunos de los algoritmos de aprendizaje para ignorar el ruido y seleccionar la señal en nuestro conjunto de datos. Sin embargo G4A, formado solamente por 13 variables es capaz de ofrecer resultados similares a G5. Resultados por algoritmos Hemos aplicado ocho algoritmos: KNN, Naïve Bayes, reglog, zerorule, aleatorio, retropropagación, Rpart y SVM, de los cuales tres de ellos sólo tenían un interés como referencia (reglog, zerorule y aleatorio). Recordemos que el algoritmo SVM está disgregado en dos: SVM y SVM radial. Usando los dos conjunto de variables que tienen un mejor rendimiento (G5 y G4A), encontramos que todos ellos ofrecen rendimientos superiores al algoritmo aleatorio, tanto en especificidad como en sensibilidad, siendo esta diferencia estadísticamente significativa (prueba t de Student, p<0.01), a excepción de la media de la especificidad en la comparación del algoritmo de retropropagación frente a reglog. En cuanto a la sensibilidad, que es la métrica que nos interesa, todos los algoritmos muestran superioridad frente a reglog, excepto Naïve Bayes, que es significativamente inferior. Se ha elegido reglog y no el algoritmo aleatorio o zerorule por ser la comparación más exigente de las tres. El algoritmo de Naïve Bayes ofrece un bajísimo rendimiento, con una sensibilidad media de 0,16. La regresión logarítmica tampoco es mucho más útil, con una sensibilidad de 0,31. Era esperable en ambos casos. Dada su escasa utilidad, omitiremos el análisis de estos algoritmos por carecer de interés para nuestro propósito. 80 El resto de algoritmos (KNN, retropropagación, Rpart y SVM) dan resultados superiores tanto en sensibilidad como en especificidad como veremos a continuación, exceptuando como hemos señalado la especificidad en la combinación Retropropagación/G5. El mejor resultado lo ostenta SVM radial en el grupo G4A con una sensibilidad de 0,89, seguido por el algoritmo de Retropropagación cuando se enfrenta a todas las variables (G5) con una sensibilidad media de 0,84. Ambas métricas son las mejores de todas las series. Esta sensibilidad es igualada por SVM radial en ese mismo grupo de variables. Si atendemos a los resultados medios de todos los algoritmos en cada uno de los grupos (Tabla 9), la primera posición es para Retropropagación, seguido de KNN y un poco más alejado Rpart. SVM radial no repite los buenos resultados frente a todos los grupos de variables, sólo lo consigue en G4A y G5. Así pues, los algoritmos de SVM radial, retropropagación, KNN y Rpart son los que obtienen mejores predicciones. Resultados de Rpart De entre los algoritmos que tienen una buena capacidad predictiva, sólo Rpart aporta modelos fácilmente analizables. El algoritmo KNN no genera modelos sino que busca similitudes entre casos, por lo que no puede aportar conocimiento teórico y el algoritmo de retropropagación genera modelos pero funciona como una caja negra, no es posible acceder a su modelo. En cambio Rpart genera unas estructuras lógicas en forma de árbol en las que cada bifurcación es una condición que divide los datos en subgrupos cada vez más pequeños, clasificando finalmente cada subgrupo en una de las clases a predecir. Estos árboles son fácilmente inteligibles por lo que su análisis resulta de gran interés, aunque hay que tener en cuenta que Rpart no es la mejor opción predictiva. Vamos por lo tanto a revisar qué variables selecciona Rpart para su funcionamiento. Cuando permitimos a Rpart elegir entre todas las variables disponibles, haciéndolo correr sobre el grupo 5, ya que es el que tiene todas las variables sin ningún tipo de poda, genera diversas soluciones, de las que podemos ver algunos ejemplos en las Figuras 6, 7 y 8. 81 Estudiando las variables que Rpart selecciona con más frecuencia, descubrimos que encuentra más utilidad en las derivadas de las variables primitivas motivación, ánimo e irritabilidad, seguido de la hora de inicio del sueño (variable dormir). Hemos resumido en la Tabla 10 el número de usos de las 82 modelo grupo sensibilidad sd sensibilidad especificidad sd especificidad 4 SVM radial G4a 0,89 0,22 0,68 0,26 6 Rpart G5 0,79 0,27 0,72 0,28 6 Rpart G1 0,77 0,27 0,72 0,27 3 Retropropagación G4a 0,77 0,30 0,73 0,31 7 Rpart G4a 0,76 0,26 0,78 0,26 4 KNN G4a 0,75 0,32 0,64 0,30 2 Retropropagación G1 0,73 0,35 0,62 0,32 3 Retropropagación G5 0,72 0,37 0,59 0,34 8 SVM G4a 0,65 0,33 0,79 0,27 3 Retropropagación G4b 0,63 0,31 0,15 0,10 3 Retropropagación G3 0,62 0,31 0,19 0,12 3 Retropropagación G2 0,62 0,25 0,26 0,14 4 KNN G4b 0,61 0,25 0,25 0,11 3 KNN G1 0,61 0,37 0,59 0,33 4 KNN G3 0,59 0,22 0,29 0,14 4 KNN G2 0,55 0,24 0,22 0,13 4 KNN G5 0,54 0,37 0,56 0,36 4 SVM radial G5 0,47 0,28 0,63 0,32 6 Rpart G3 0,39 0,12 0,39 0,12 7 Rpart G2 0,39 0,11 0,40 0,12 5 Rpart G4b 0,32 0,12 0,33 0,12 3 SVM radial G1 0,32 0,20 0,62 0,32 7 SVM G5 0,26 0,19 0,72 0,31 7 SVM G1 0,25 0,17 0,71 0,31 3 SVM radial G3 0,21 0,05 0,63 0,12 7 SVM G3 0,19 0,06 0,64 0,16 3 SVM radial G2 0,18 0,05 0,65 0,14 8 SVM G2 0,17 0,08 0,50 0,18 3 SVM radial G4b 0,13 0,04 0,63 0,14 6 SVM G4b 0,12 0,04 0,56 0,23 Tabla 8. Resultados medios de los algoritmos ordenados por sensibilidad. Se acompañan de las desviaciones típicas de las medias (sd). diferentes variables en una muestra de 20 árboles. Observamos que Rpart tiene una clara preferencia por la media como estadístico frente al resto de posibilidades (Figura 9). Analizando variables primitivas de las que derivan las variables seleccionadas, la más útil para Rpart es la irritabilidad media, seguida de cerca por el ánimo medio y la hora de dormir máxima (más tardía) en el periodo. La varianza en la variable motivación también se usa intensamente, considerando como variables similares la varianza del periodo y la resta de varianzas, tiene una importancia similar a la irritabilidad (Figura 10). Así pues, la irritabilidad percibida por el paciente parece determinante en la predicción de las crisis, así como la variable ánimo, un constructo quizás difuso pero consigue recoger información de utilidad. En cuanto a la varianza en la motivación, se trata de un dato a explorar. 83 84 0 7,5 15 22,5 30 m ed ia m ax va r re st a va r m ed ia to ta l re st a m ax pe nd ie nt e re st a m ed ia va r t ot al re st am ed ia na Figura 9. Suma del número de variables usadas por Rpart en una muestra de 20 árboles según el estadístico del que derivan sensibilidad especificidad g5 0,56 0,64 g4b 0,36 0,15 g4a 0,76 0,29 g3 0,40 0,15 g2 0,38 0,12 g1 0,54 0,27 Tabla 9. Resultados medios de los algoritmos 6. Discusión En el capítulo de discusión empezaremos revisando las variables que han demostrado valor predictivo, ahondando en su significado y las implicaciones para un futuro modelo de la enfermedad, para poder analizar en un segundo tiempo el planteamiento del modelo, comenzando con los algoritmos ensayados, y después con las diferentes decisiones de diseño que han condicionado el estudio. 6.1 Sobre las variables Es importante tener en cuenta que no es posible asignar a cada variable un valor predictivo único, ya que la predicción se obtiene siempre de un conjunto de variables. El significado de una variable determinada condiciona probablemente el peso de otras variables en la predicción ya que la dinámica que gobierna el valor de YMRS no es la simple combinación de factores lineales aportados por cada variable (Bonsall, 2011; Bonsall, 2015; Ortiz, 2019). Es la razón por la que los modelos lineales no dan buenos resultados. Sin embargo, los rankings que hemos elaborado nos han acercado al papel de estas variables en el modelo y han servido para guiarnos en su construcción. Revisar y sumergirse en estas clasificaciones ha sido una de las tareas más satisfactorias de este trabajo, haciéndonos reflexionar sobre el comportamiento del TB y sobre su propia naturaleza. A lo largo de este trabajo se ha intentado captar la utilidad de las variables de diversas formas: su correlación con el valor de YMRS, la entropía que contienen o cómo de útiles las ha considerado el algoritmo Rpart para construir su modelo. A continuación vamos a revisar las variables más interesantes para nuestro modelo, su valor predictivo de acuerdo a estas clasificaciones y el significado que esto tiene. 85 Irritabilidad De entre todas las variables, la irritabilidad percibida por el paciente ha destacado sobre el resto (Tabla 11). Todas sus variables derivadas correlacionan positivamente con YMRS, a excepción de Min10. La correlación es más fuerte en el intervalo temporal 0-10. Hay un claro patrón temporal en la correlación. La desviación típica también correlaciona positivamente con YMRS. Tras estudiar los datos brutos, creemos que se debe a que la percepción de la irritabilidad por parte del paciente no es en forma de un estado continuo, sino que es capaz de detectar estados discretos, enfados concretos, que ocurren ocasionalmente sobre una base continua en la que se ve a sí mismo con una reactividad normal. Cuando se diseñó el estudio, teníamos la impresión de que sería una variable de poca utilidad, incluso estuvimos tentados de no incluirla. Creíamos esto porque en la consulta siempre que se pregunta por la irritabilidad y la conciencia real de esta variable suele ser muy baja. Desde el entorno familiar se percibe con gran facilidad, pero en nuestra experiencia clínica observamos cómo el propio paciente tiene dificultades para darse cuenta de ella. Variable r p Irritabilidad Media10 0,53 0,000 Irritabilidad Sd10 0,51 0,000 Irritabilidad Max10 0,51 0,000 Irritabilidad Media 0,38 0,000 Irritabilidad Media30 0,33 0,001 Irritabilidad Max30 0,28 0,006 Irritabilidad Sd30 0,28 0,006 Irritabilidad Max 0,26 0,010 Irritabilidad Sd 0,26 0,010 Irritabilidad Media20 0,26 0,011 Irritabilidad Max20 0,21 0,040 Irritabilidad Sd20 0,21 0,040 Irritabilidad Min10 0,12 0,257 Tabla 11. Correlación de las variables basadas en irritabilidad 86 87 Figura 6. Árboles de decisión de Rpart 88 Figura 7. Árboles de decisión de Rpart 89 Figura 8. Árboles de decisión de Rpart Pensándolo más tarde, esto que parece una desventaja ha podido ser la causa de su éxito. Su entropía es baja, probablemente porque es una variable especialmente homogénea y plana excepto justo antes de las proximidades de un aumento del YMRS. Esta dificultad para ser consciente de la irritabilidad, este escalón en la introspección, puede actuar como un filtro que aumenta el contraste entre las épocas de estabilidad frente a las épocas pre-crisis. Así, cuando el paciente reconoce la irritabilidad, hay una gran probabilidad de crisis, aunque la sensibilidad general de esta variable ante los cambios en el YMRS sea baja. Entender la función general de los algoritmos de aprendizaje automático, nos ayuda a deshacer esta aparente contradicción. Los algoritmos recogen conocimiento de cada variable allí donde lo encuentran. No pasa nada si no lo obtienen siempre del mismo lugar, porque tienen muchas fuentes de información para elegir. La irritabilidad será útil en algunos casos, y cuando no lo sea, la predicción vendrá de otras variables. Pero sí hay irritabilidad las probabilidades de una crisis serán muy altas. Ánimo Las variables derivadas de la primitiva ánimo han resultado ser también bastante valiosas. Al principio tampoco parecían atractivas debido a que el ánimo es un concepto demasiado abstracto, difícil de definir, muy centrado en la valencia de la emoción y poco discriminante (Watson, 2000). En resumen: una variable demasiado compleja cuando en nuestros supuestos iniciales señalábamos la sencillez como una característica deseable para las variables predictivas. Sin embargo los marcadores de su utilidad están claros: con una buena correlación con YMRS y uso por Rpart. El concepto de sencillez no es nada claro. Variables que para nuestro marco conceptual intuitivo parecen simples pueden tener cualidades muy diferentes en el análisis que un algoritmo de aprendizaje automático realiza. Es mejor no prejuzgar la utilidad de las variables con criterios comprensivos. Esto ayuda a abrirse a las posibilidades del conocimiento contraintuitivo. Sueño y ritmo circadiano El tercer grupo de variables por su importancia en la predicción han sido las variables derivadas de la primitiva hora de dormir. Sin embargo, aunque esperábamos que hora de despertar estuviera al mismo nivel, ha sido 90 91 0 3 6 9 12 m ot iv ac ió n án im o irr ita bi lid ad do rm ir ta ba co an si ed ad ca lid ad s ue ño ce ni t s ue ño ca fe ín a de sp er ta r co nc en tra ci ón Figura 10. Suma del número de variables usadas por Rpart en una muestra de 20 árboles según la variable primitiva. media max var resta var media total resta max pendie nte resta media var total restam ediana TOTAL motivación 2 5 5 12 ánimo 8 1 3 12 irritabilidad 11 11 dormir 8 8 tabaco 1 1 3 1 6 ansiedad 4 1 5 calidad sueño 3 1 4 cenit sueño 3 3 cafeína 1 2 3 despertar 1 1 2 concentración 1 1 TOTAL 25 10 10 6 4 3 3 3 2 1 Tabla 10. Variables usadas por Rpart en una muestra de 20 árboles. sorprendentemente de escaso interés. Tampoco las variables duración del sueño o cenit del sueño han sido de interés: sólo una de las variables derivadas de duración del sueño tenía correlación con YMRS y no ha sido usada en ningún caso por Rpart. Todo esto a pesar de que la duración del sueño es uno de los pródromos más frecuentes en la enfermedad (Jackson , 2003; Gruber, 2011). Recordando el modelo de Borbély (Borbély, 1982) y la hipótesis de la primacía de la manía, podemos reflexionar acerca del papel reparador del sueño de ondas lentas y la relación de densidad de sueño REM con el estrés. Estos resultados encajarían con una visión del TB como una incorrecta gestión de la energía y la hipótesis de la teoría neurotrófica de la depresión (Palagini, 2013). Quizás hora de dormir aporta más a la predicción porque es un buen marcador de la alteración del ritmo circadiano, mientras que hora de despertar, duración del sueño y cénit del sueño serían menos interesantes ya que estarían recogiendo la influencia de la sintomatología depresiva, más ligada al proceso S. Hora del test es una variable que, sin estar relacionada con el sueño, es un marcador circadiano. Se libraría de la influencia del proceso S, apuntando de forma más pura a la manía. Tendría además la ventaja de ser muy objetiva, ya que se recoge de forma automática sin intervención del paciente. Un gran número de variables derivadas de la primitiva hora de test, tenían correlación significativa con YMRS. Sin embargo Rpart no las usaba en ningún caso. Esto podría deberse a que es una de las variables con mayor entropía (a pesar de la cual mostraba gran correlación), lo cual podría hacerla más difícil de usar por Rpart. Eso no significa que no sea pueda ser usada por retropropagación o KNN, aunque es imposible averiguarlo. Creemos que hora del test es probablemente un marcador con gran contraste del desplazamiento de la acrofase del ritmo circadiano, con una información cuantitativa que nuestras técnicas de aprendizaje automático saben utilizar. Es reseñable también el aumento de su variabilidad en los días próximos a la medición de YMRS (sd10), explicable por una desestructuración del ritmo circadiano pre-crisis. Esto no encaja con la disminución de sd20 en las variables duración y hora de dormir, aunque es cierto que se refieren a distintos intervalos temporales. Cuanto peor es calidad de sueño, mayor es el YMRS, o al menos esa es la interpretación que hacemos de la correlación positiva entre las variables derivadas (medias y mínimas en diversos periodos) y el YMRS. Un resultado esperable y que sobrepasa el obstáculo de la subjetividad absoluta de esta variable. A pesar de que 92 scrivlnk://A78B9B91-DC69-4BBD-B5FA-C97EF74A3411 la cualidad del descanso es uno de los conceptos más subjetivos por los que preguntamos, su utilidad para la predicción es alta, siendo usada también por Rpart. Aunque las variables más duras y objetivas tienen ventajas obvias, no debemos desdeñar la información de variables consideradas más blandas. Nuestro modelo tiene que ser capaz de recoger la información allí donde se encuentre. Ansiedad Ansiedad es otra variable que ha demostrado su valor predictivo, aumentando su media y sus valores mínimos con el aumento de YMRS y con una correlación negativa en su variabilidad respecto al mismo, siendo su entropía relativamente baja. Con la variable ansiedad chocamos de nuevo ante una de las grandes dificultades de la psiquiatría. Diferenciar fenomenológicamente ansiedad, disforia, activación, inquietud psicomotriz o irritabilidad es difícil. Estas conceptos no nacen realmente de definiciones científicas, aunque luego intentemos asimilarlas a las mismas, sino que tienen un origen evolutivo. Su existencia se debe a la utilidad que han tenido para nuestras especie y sus ancestros en su adaptación al entorno (Fox et al, 2018) y sus definiciones se basan parcialmente en el cableado innato de nuestro sistema nervioso, siendo por lo tanto incompletas, superpuestas unas a otras y con probables diferencias interpersonales. Pero es lo que tenemos para trabajar. Por lo tanto, lo único que podemos afirmar es que, eso a lo que llamamos ansiedad (o lo que nuestros pacientes llaman ansiedad) aumenta días antes de producirse una superación en el umbral YMRS, por lo que tiene utilidad para nuestro futuro modelo. Esto en realidad sería aplicable a casi todas las variables con las que trabajamos. La interpretación de la disminución de la desviación típica en la ansiedad es interesante. Implica que la variabilidad de la ansiedad disminuye al acercarse a valores altos (patológicos) de YMRS. También sucede de forma significativa con las variables hora de dormir, ansiedad, duración del sueño y hora de sueño. Como hemos visto en irritabilidad ocurre al contrario, al igual que en la variable hora del test. Además, cuanto mayores son sus valores mínimos el YMRS suele ser mayor. Dicho de otra manera: si el paciente está con valores de ansiedad superiores a sus niveles basales de manera mantenida, el YMRS aumenta. 93 Como complemente a nuestros datos sobre la ansiedad, el grupo de Ortiz (2014) en un valioso estudio demuestra que el descenso en el ánimo correlaciona, tanto en afectados por TB como en no afectados, con valores previos de alta ansiedad dentro de una dinámica de autocorrelación ARIMA de orden 1. Es decir, que los valores inmediatamente previos de ansiedad (en el día anterior) condicionarían un descenso en el ánimo, aunque este efecto se extendería según muestran en sus resultados por el propio efecto de la autocorrelación hasta al menos los 15 días previos a la medición del ánimo. Estos resultados no contradicen nuestros hallazgos (eso sería dar por hecho que la depresión y la manía son extremos de una única dimensión) y además apoyan la teoría de la primacía de la manía. Resulta de interés la disminución de la varianza que aparece en algunas variables previamente al aumento en el YMRS (Tabla 12). Un hallazgo común en las llamadas enfermedades dinámicas es un funcionamiento más autónomo del sistema regulador respecto a las influencias ambientales (Gottschalk, 1995). Esto debería corresponderse con una menor entropía y posiblemente una menor varianza. Iría en consonancia con nuestros hallazgos de una correlación negativa de las variables relacionadas con la variabilidad. Sin embargo en otras variables encontramos una respuesta contraria. Este comportamiento dual podría explicarse por el aumento de las fluctuaciones que suele preceder al colapso de un sistema. Tendríamos por lo tanto variables que darían cuenta de esa rigidez sistémica que sería parte de la patogenia de la enfermedad y otras que darían la voz de alarma ante la cercanía al umbral de la catástrofe (Dai, 2012). Motivación El caso de la variable motivación es especial. Estamos de nuevo ante una variable especialmente subjetiva. Ser relacionaría con el ámbito de la actividad. Cuando estudiamos su correlación con YMRS, no encontramos una gran asociación. Sólo correlaciona de manera significativa su derivada Max20. Tiene una entropía media-baja en relación con el resto. Pero resulta de gran utilidad para Rpart, que la utiliza en doce ocasiones durante los ensayos realizados. Las mismas veces que la variable ánimo y una más que la variable irritabilidad. Pero Rpart no usa casi nunca sus valores medios, sino su varianza o la diferencia de las varianzas. Estamos por lo 94 scrivlnk://52E26A79-4BFC-4355-A138-CD578264238F tanto ante una variable en la que probablemente la información no descansa en su valor absoluto sino en su variabilidad. Adicciones En las adicciones no hemos encontrado grandes asociaciones. Por una parte el estudio del consumo de alcohol y otras drogas no ha sido posible debido al bajo número de consumos en nuestra muestras. Es lógico ya que se trata de pacientes estables, con un seguimiento muy cercano y con gran conciencia de enfermedad. Sin embargo muchos de ellos sí consumen sustancias adictivas legales, como el tabaco y la cafeína. El consumo de tabaco está relacionado con la gravedad de esta enfermedad (Waxmonsky, 2005). Aunque pacientes, familiares y médicos sabemos por experiencia que el aumento del consumo de tabaco suele ser el preámbulo de una crisis, no hemos encontrado bibliografía que avale este punto, sin embargo nuestros datos apoyan este hecho, al menos en el intervalo 0-10. Estudiando la cantidad de cigarrillos en los días previos a un YMRS por encima del umbral, respecto a días con YMRS subumbral, se observa cómo la media de cigarrillos consumidos aumenta con el YMRS, siendo la r de Spearman de 0.65 entre Young y la media de consumo de cigarrillo, ligeramente superior a favor del Young. Recordemos que la variable consumo de cigarrillos por día se ha normalizado respecto a cada paciente de forma individual. Se trata por lo tanto de una variable que contiene información acerca del estado anímico y que puede ser útil para predecir crisis. Si estudiamos por separado el intervalo de 30 días que hemos estudiado: los 10 días previos al YMRS, los 10 anteriores (10-20) y los 10 anteriores (20-30), sólo se mantiene una relación estadísticamente significativa en los 10 días antes de la medición del YMRS, además de escasa potencia (r = 0,25). La variación en la cafeína no muestra cambios significativos en relación con el YMRS. Esto puede deberse a que los consumos de tabaco son más homogéneos, y muestran menos dispersión: todos nuestros pacientes tienen dispersiones mucho mayores en la cantidad de consumo de cafeína frente a la cantidad de consumo diario de tabaco, siendo las medias de la desviaciones típicas de 0,2 para tabaco y de 2,07 para cafeína (Figura 11). Es interesante comprobar como la variabilidad en 95 el consumo es también probablemente una característica personal, como indica la alta correlación existente entre los coeficientes de variación (r = 0,83). 6.2 Planteamiento del modelo Sobre los algoritmos Como hemos visto en la sección resultados, SVM radial, retropropagación, KNN y Rpart son los que obtienen mejores predicciones. En cambio, regresión logarítmica y Naïve Bayes tienen resultados mucho peores. Inicialmente SVM tenía resultados intermedios. Esto tiene una explicación sencilla. Sabemos desde hace tiempo que la dinámica de los cambios afectivos en el trastorno bipolar es no lineal (Gottschalk, 1995 Bonsall, 2011) por lo que un clasificador lineal no va a poder separar adecuadamente los casos. 96 0.1 0.2 0.3 0.4 0.5 0 2 4 6 8 c t Figura 11. Desviación típica del consumo de cafeína (c) frente a desviación típica de consumo de tabaco (t). Cada punto representa un paciente. scrivlnk://3F9AEB0F-5F96-4B7C-A611-3C23826B4A3A scrivlnk://3F9AEB0F-5F96-4B7C-A611-3C23826B4A3A scrivlnk://437AC93D-7A15-416F-95EB-DEEA3B97F8EE En cuanto a los resultados intermedios de SVM, se trataba de un artefacto, ya que eran resultados medios de la aplicación de SVM lineal junto a diferentes funciones kernel. Al analizar la función kernel radial por separado que sí era con el complemento de ese kernel (SVM radial) un clasificador no lineal se comprobó su excelente resultado que artefactaba SVM general, haciéndolo parecer mejor de lo que era. Repasemos entonces los algoritmos más exitosos y su funcionamiento: SVM Radial, retropropagación, KNN y Rpart son los mejores algoritmos y tienen en común que son clasificadores no lineales. En cambio, SVM convencional, reglog y Naïve Bayes son clasificadores lineales con resultados muy inferiores. KNN resulta ser un clasificador no lineal porque no divide las regiones del espacio de resultados con un hiperplano, simplemente busca los casos más similares (cercanos geométricamente) y les asigna una misma etiqueta. La frontera de decisión se parecerá más bien a una curva, en ningún caso será lineal. De allí sus buenos resultados. Rpart, como todos los algoritmos del tipo árbol de decisión, es un clasificador no lineal que tienen la ventaja como hemos podido comprobar de producir modelos inteligibles. 97 Variable r p Ánimo Sd20 -0,25 0,018 Ansiedad Sd20 -0,28 0,006 Ansiedad Sd30 -0,26 0,011 Dormir Sd20 -0,23 0,022 Duración Sd20 -0,23 0,022 horatest Sd10 0,21 0,045 Irritabilidad Sd10 0,51 0,000 Irritabilidad Sd30 0,28 0,006 Irritabilidad Sd 0,26 0,010 Irritabilidad Sd20 0,21 0,040 Tabla 12. Variables en las que disminuye la desviación típica de forma significativa previamente a un YMRS por encima del umbral El algoritmo de retropropagación, es un caso especial de red neuronal artificial, también llamado perceptrón multicapa, el cuál fue una evolución del perceptrón simple, justamente para dejar atrás la principal limitación de éste último, su incapacidad para resolver problemas no lineales. Mediante la función de retropropagación que adapta los pesos de la red neuronal propagando los errores hacia las capas ocultas anteriores el perceptrón se convirtió en un clasificador no lineal. Este algoritmo de aprendizaje original es el que usamos en el estudio (Rumelhart, 1986). Así pues, los algoritmos de SVM radial, retropropagación, KNN y Rpart son los que obtienen mejores predicciones. Las redes neuronales con retropropagación y KNN son las más robustas ante diferentes selecciones de variables. Todos los algoritmos no lineales dan buenos resultados, al menos para verificar nuestra hipótesis de que es posible predecir la aparición de sintomatología maníaca mediante el análisis de variables clínicas recogidas previamente. La sensibilidad es el valor que guía esta bondad de los resultados, con el objetivo final claro que hemos tenido en mente desde el principio, que es generar alarmas precoces para las crisis de la enfermedad. Según la sensibilidad, el mejor algoritmo es SVM radial cuando se aplica al conjunto de variables G4a. Retropropagación tiene resultados levemente menores. A pesar de esto, lo consideramos superior a SVM radial ya que es mucho más versátil, consiguiendo extraer más conocimiento en todos los conjuntos de variables, probablemente porque su capacidad de adaptación y autoconfiguración sea mayor. Esto tiene importantes ventajas. En primer lugar se adaptaría más fácilmente a distintos conjuntos de variables e incluso a diferentes variables. Considerando además nuestra opinión de que los datos de cada individuo son diferentes entre sí, este tipo de algoritmo sería el más adecuado para iniciar estudios individuales Temporalidad de los datos Uno de los escollos más importantes que encontramos en la estrategia de análisis era cómo captar la información temporal que tenían nuestros datos. Los algoritmos adaptativos que trabajan con series temporales tienen una complejidad técnica que no podíamos abarcar, pero tampoco queríamos usar modelos más simples con los que estábamos seguros que no podríamosconseguir resultados 98 adecuados. Por eso se decidió usar estadísticos derivados como variables intermedias. Estos estadísticos, aplicados por tramos temporales, sí recogen parcialmente la información temporal de nuestras series de datos y pueden ser usados directamente con técnicas de aprendizaje automático más sencillas. Esta estrategia poco convencional tiene la desventaja de generar un número muy alto de variables que además presentan altos valores de colinealidad, dos circunstancias que ponen la tarea mucho más difícil a nuestros algoritmos. Para tratar de evitar estas dificultades se decidió analizar las variables en grupos seleccionados previamente para disminuir la redundancia. De ahí el análisis diferenciado para los grupos G1, G2, G3, G4a, G4b y G5. Los resultados medios por grupos nos indican que la selección G4b es la que alcanza con diferencia mayores valores de sensibilidad (Tabla 13). Las variables que integran este grupo y que por lo tanto contienen las claves para la predicción son irritabilidad max, irritabilidad media, irritabilidad sd, dormir max, dormir media, duración max, ánimo max, horatest media, calidad media y ansiedad sd. Se trata de una amplia representación de los distintos aspectos de la irritabilidad (la fuente de datos más importante sin duda), también de hora de dormir (casi igual de importante) junto con algunas variables que parecen claves como ansiedad sd, hora del test y calidad. A pesar de esto, la mejor sensibilidad media la alcanza SVM radial sobre el grupo G5, que contiene todas las variables, con 0,89 (sd 0,22). Es un resultado llamativo que pone en entredicho la necesidad de podar el número de variables. Es curioso como su especificidad es la más alta, probablemente algunas de las GRUPO sensibilidad especificidad g5 0,56 0,64 g4b 0,36 0,15 g4a 0,76 0,29 g3 0,40 0,15 g2 0,38 0,12 g1 0,54 0,27 Tabla 13. Resultados medios de sensibilidad y especificidad de los algoritmos no lineales por grupos de variables. 99 variables que hemos desechado en los otros grupos sirvan para mejorar la predicción en este aspecto. Orientación a la manía Dirigir el modelo a la predicción de los síntomas maníacos ha sido otra decisión de diseño crucial, esta vez basada en nuestra orientación teórica, que tiene como una de sus premisas fundamentales la hipótesis de la primacía de la manía, aunque también nos ha guiado nuestra experiencia clínica. Creemos que gran parte de los resultados positivos de nuestro modelo se deben a esta elección. Apoyando esta idea podemos comprobar como hay un mayor número de correlaciones y de mayor intensidad entre nuestras variables y el valor de YMRS frente a esas mismas variables y HDRS. Temporalidad La elección de la granularidad temporal de las variables se ha visto condicionada por nuestros medios. El mínimo necesario era un registro diario y es en lo que está basado nuestro estudio. Este nivel de detalle temporal ha demostrado ser suficiente para construir un modelo útil. Sin embargo hubiéramos deseado tener una definición temporal mayor, hasta alcanzar en algunas variables registros horarios que nos permitieran tener patrones diarios. Para esto es imprescindible la recogida automática de datos, mediante acelerometría por ejemplo. Aunque en el planteamiento inicial estaba previsto este aspecto y muchos de nuestros pacientes usaron acelerometría para recoger datos de actividad y sueño, por problemas técnicos estos datos no han podido ser recogidos ni analizados. Otro aspecto de la variable tiempo que desconocíamos y que es vital para la construcción del modelo es con cuánta antelación al cambio en el YMRS existen alteraciones en las variables predictoras. La bibliografía al respecto no es especialmente clarificadora. En los estudios clásicos sobre pródromos se observa como los síntomas maníacos son significativamente más largos que los depresivos. Aparecen de media 20 días antes de las crisis, frente a los 9 días de pródromos en los episodios depresivos (Molnar et al., 1988). Esto nos dio una idea aproximada de cuánto tiempo mínimo deberían abarcar nuestros datos frente a la crisis a predecir. 100 No obstante cabía la posibilidad de que estos datos, obtenidos a posteriori mediante entrevistas al paciente fueran poco sensibles y existieran alteraciones anteriores a esos periodos difíciles de captar por el paciente. Por eso usamos una ventana previa de 30 días en nuestras predicciones. En nuestros resultados respecto a YMRS, podemos comprobar cómo en la tabla de distribución de las variables significativas a lo largo de los tres intervalos estudiados, hay más variables significativas en los intervalos 11-20 y 1-10. Es una medida muy grosera pero resulta difícil hacerlo de otra forma (tabla 14). Esto nos sirvió para generar grupos que intentasen ceñirse a esa ventana. En concreto los grupo G4a y G4b son los que coincidían más con la ventana 11-20, con una ventana 7-14. En el caso del G4a ha sido el grupo con mayor valor predictivo medio, pero hay que tener en cuenta que el G4b contenía sólo 3 variables. Afinar más con las ventanas temporales debería ser un objetivo en futuras versiones del modelo. 21-30 11-20 1-10 total 1-30 ánimo 0 3 2 1 ansiedad 1 1 2 1 calidad_sueno 2 2 2 1 concentración 0 0 1 1 dormir 1 3 1 1 duración_sueño 0 2 0 0 hora_test 1 1 3 1 irritabilidad 3 3 3 2 motivacion 0 1 0 0 tabaco 0 0 2 Total 8 16 16 8 Tabla 14. Número de variables significativas según la variable primitiva en los 4 segmentos temporales considerados. 101 El modelo individual frente al grupal Existen dos aproximaciones diferentes para predecir el estado anímico en el trastorno bipolar: la primera es generar un modelo matemático igual para todos los pacientes y la segunda es intentar predecir la forma concreta en la que se comporta la enfermedad en cada persona. Creemos que es superior el modelo individualizado, ya que el trastorno bipolar es una enfermedad clínicamente diversa con dinámicas heterogéneas (Sani, 2017). Cuando hemos visto en los datos en bruto, encontramos diferencias en su distribución entre los datos agrupados y los datos individuales y entre los datos individuales entre sí. Como muestra, podemos comparar las desviaciones típicas grupales con la media de las desviaciones típicas calculadas individualmente (Figura 12). Se observa cómo las variables irritabilidad, ánimo, cafeína, cenit de sueño, hora de despertar duración del sueño y hora de dormir tienen una mayor desviación típica en su 102 0,00 0,08 0,15 0,23 0,30 ho ra _t es t C on ce nt ra ci ón an si ed ad ca lid ad _s ue no m ot iv ac io n irr ita bi lid ad án im o ta ba co ca fe ín a ce ni ts ue no de sp er ta r du ra ci ón _s ue ño do rm ir sd grupal sd individual (media) Figura 12. Desviaciones típicas grupales e individuales medias en las distintas variables primitivas. cálculo individual. Esto indica que podrían ser más interesantes para los algoritmos analizadas individualmente. Por desgracia, la cantidad de datos necesarios para generar un modelo por paciente es muy superior a la que podemos conseguir. Es más, tras la experiencia de estos estudios, creemos difícil mediante el uso de autoinformes llegar a esa cantidad de datos. Por lo tanto nos hemos visto obligados a realizar un modelo general. Para poder realizar un modelo individual sería necesario automatizar al menos la recolección de algunas variables. Autoinformes En nuestro diseño seleccionamos como fuente de datos los autoinformes de razón fija, es decir, realizados con una frecuencia constante, en nuestro caso diaria. Esta elección ha condicionado todo el desarrollo. Es una técnica excelente para el estudio de las dinámicas temporales, con gran tradición en el campo del estudio de la afectividad, pero tienen puntos débiles que deben tenerse en cuenta. En concreto, en su aplicación a los síntomas afectivos, se ha descrito la la posible aparición de fenómenos de habituación y el desarrollo de respuestas estereotipadas. También la posibilidad de entrenamiento progresivo, pudiendo el paciente aprender durante la repetición del cuestionario sobre las cuestiones que se le preguntan, respondiendo por lo tanto de forma diferente a lo largo del tiempo. Sin embargo, no hay evidencias de que estos fenómenos tengan un impacto importante en la calidad de los datos (Bolger, 2003). En realidad, la principal desventaja que presentan los autoinformes de razón fija cuando la frecuencia de muestreo es alta (como es nuestro caso) es el cumplimiento. Ya desde el inicio intentamos protegernos contra este problema facilitando la accesibilidad. Esa es una de las razones por la que hemos ofrecido el cuestionario en el teléfono móvil, que además fue diseñado para poder contestarse en pocos segundos. Un estudio con autoinformes diarios requiere una gran motivación previa y un alto nivel de compromiso, y esa es al final la verdadera barrera para implementar este tipo de sistemas en la clínica (Shiffman, 2008). Por suerte, nuestra muestra está formada por pacientes especialmente motivados, con excelente conciencia de enfermedad, que forman parte de un programa de tratamiento con seguimiento estrecho y reciben psicoeducación de 103 forma intensa. A pesar de esta circunstancia, sólo el 55,6% de los pacientes inicialmente invitados al mismo usaron el formulario. Si la adherencia es tan baja en un entorno clínico privilegiado, el trasvase de estas técnicas a la realidad clínica tendrá sin duda dificultades. Se nos ocurren varias soluciones para mejorar esta adherencia. Durante nuestro estudio no se ha hecho un especial hincapié en que los pacientes rellenen el cuestionario todos los días porque queríamos ver cuál era la tasa de respuesta normal sin realizar acciones extras por nuestra parte. No obstante se podrían realizar recordatorios, avisos automáticos al móvil al detectar fallos en la cumplimentación o insistir en cada consulta en el uso de la herramienta. Esto mejoraría la tasa de respuestas. Disminuir la frecuencia de muestreo haría menos costoso el uso del cuestionario. Quizás podrían obtenerse resultados de igual calidad con un muestreo menor. Para saber si es posible deberíamos conocer la dinámica que gobierna los cambios afectivos y cómo son las variaciones temporales de las variables involucradas. Nuestro estudio aporta ya algunos de esos datos, por lo que en una segunda versión podrían ensayarse frecuencias de muestreo menores. Otra forma de conseguir el mismo efecto sería el uso de una tasa de muestreo variable en vez de una fija. Haríamos depender la frecuencia de muestreo de las circunstancias clínicas, incrementándola en épocas de mayor riesgo. Para ello debería realizarse un análisis en tiempo real de los datos recogidos que calculase el riesgo en cada momento y adaptase la frecuencia según el resultado. También disminuiría el esfuerzo del paciente si el cuestionario fuera más corto. Podríamos reducir las variables por las que se preguntan, haciendo el formulario más rápido de contestar. Cuanto mejor conozcamos la dinámica y la importancia de las variables involucradas, más fácil nos será diseñar cuestionarios menos intrusivos, podando aquellas áreas que tengan menos interés. Según nuestros resultados podemos predecir con similar calidad los resultados basándonos en 10 variables primitivas (grupo 4a) en vez del total de variables (15 variable primitivas en el grupo 5), reduciendo en un tercio el esfuerzo para rellenar el cuestionario. Pero para acabar con el problema del cumplimiento, lo mejor sería recoger variables de forma automatizada. Hemos comprobado como las variables con más interés para la predicción se corresponden con las áreas de sueño, ritmo circadiano o actividad. Mediante un acelerómetro podríamos captar datos acerca de la 104 actividad circadiana o el sueño sin intervención del paciente. Esto nos permitiría además frecuencias de muestreo mucho mayores, que supondrían un salto cualitativo en la información ofrecida a los algoritmos. También podrían usarse técnicas de análisis de sentimiento aplicadas a las intervenciones en redes sociales, que nos darían medidas relacionadas con el estado afectivo del paciente, buscando una correlación con nuestras variables primitivas de irritabilidad o ánimo. Otras consideraciones Mediante este estudio hemos validado nuestra hipótesis principal: se ha comprobado como es posible predecir la dinámica del estado afectivo, al menos la evolución de la sintomatología maníaca, con datos previos de autoinformes recogidos por los pacientes. En nuestro ensayo esto se consigue con datos que están separados una semana de la medición del YMRS, es decir, tenemos al menos una semana de margen para intervenir de forma preventiva sobre la enfermedad. A pesar de ser un modelo muy primitivo y mejorable, la sensibilidad media alcanzada se encuentra entre 0,7 y 0,8 . Es decir, más entre el 70 y el 80% de las crisis van a generar alertas, las cuales serán ciertas en un porcentaje que oscila alrededor del 70%. Creemos que son cifras útiles para tomar determinadas decisiones clínicas, como contactar con el paciente telefónicamente o adelantar una consulta. Teniendo en cuenta que nuestro trabajo tenía un interés únicamente demostrativo y no aplicativo, los resultados han superado nuestras expectativas. No obstante, estamos seguros de que hay un largo recorrido de mejora, que pueden hacer de estas estrategias de predicción herramientas útiles y certeras con un gran potencial. Profundizar en el conocimiento del cambio afectivo en el trastorno bipolar no sólo tiene aplicaciones clínicas prácticas e inmediatas, también nos ayuda a entender los patrones temporales complejos, la esencia del trastorno bipolar, una enfermedad dinámica. Esto nos podría permitir no sólo predecir su evolución, sino incluso a diseñar tratamientos que nos llevasen hacia el equilibrio y la estabilidad. También nos ayudará a generar un marco de conocimiento distinto en el que el trastorno bipolar quizás pueda ser entendido como la aparición de una dinámica anormal en un sistema de homeostasis dedicado a regular la inversión energética que nuestro organismo realiza en las diferentes posibilidades conductuales. 105 Para alcanzar un conocimiento más completo de la dinámica de la inestabilidad afectiva necesitamos herramientas matemáticas potentes, que puedan extraer conocimiento de entornos multidimensionales. Las técnicas de aprendizaje automático nos ayudan en esta tarea, rebasando la capacidad del cerebro humano para encontrar patrones en conjuntos de datos amplios y de alta dimensionalidad. Creemos el estudio de la conducta avanzará en esta dirección. Por el momento estamos empezando a usar las matemáticas para entender mejor las relaciones entre los conceptos que clásicamente hemos manejado. Pero en el futuro estos mismos conceptos básicos que usamos como ladrillos y base de nuestra construcción teórica podrán ser reformulados, el mismo concepto de emoción o al menos la separación entre las mismas. Nuestro cerebro simplifica la realidad para poder manejarla, en este caso esquematiza la conducta humana. Pero para seguir avanzando la psiquiatría y la psicología deberán apegarse menos a lo intuitivo y lo comprensivo. Han sido útiles para llevarnos hasta el punto actual, pero se basan en sistemas que evolucionaron en el paleolítico para mantener la cohesión social y permitir acciones en grupo, no son herramientas fiables ahora y suponen un lastre en el estudio científico de la conducta (Wilson, 2017). Por esto creemos que el uso de variables duras recogidas de forma automática y más liberadas de subjetividad ayudará a esta gran evolución que deberá producirse en nuestra disciplina. 106 7. Conclusiones y trabajo futuro Las conclusiones de nuestro estudio son las siguientes: 1. Es posible realizar un modelo que prediga le evolución de la sintomatología maníaca, en nuestro caso medida mediante YMRS. 2. Las variables recogidas mediante autoinformes son una fuente válida para modelar la dinámica del trastorno bipolar y nos dan un margen temporal de al menos una semana para poder realizar intervenciones clínicas preventivas. 3. Las variables que han demostrado más utilidad han sido la valoración subjetiva de estados emocionales por parte del pacientes, principalmente irritabilidad, estado de ánimo general y ansiedad, pero también las variables relacionadas con el sueño y la actividad circadiana. 4. La recogida de datos ha sido factible, permitiendo realizar las predicciones. No obstante una estrategia basada en recogida de datos de forma automatizada tendría muchas ventajas. 5. Los mejores algoritmos entre los ensayados han sido los clasificadores no lineales, especialmente las redes neuronales artificiales con retropropagación. Más que respuestas, nuestro trabajo nos ha generado innumerables preguntas, así como nuevos caminos que nos gustaría probar en un futuro. Algunos de los que parecen más prometedores son: 1. Modelos individualizados Debido a la limitación de nuestros datos, sólo hemos podido entrenar los algoritmos con conjuntos de datos globales formados por variables de todos los pacientes. A la vista de la distribución de las variables, pero también teniendo en cuenta la gran heterogeneidad en el curso de la enfermedad, sería de gran interés diseñar un nuevo estudio que pudiera analizar individualmente a los pacientes, adaptando el modelo a cada uno de los pacientes. 107 2. Recogida de variables de forma automática Recoger las variables de forma automática mejoraría el cumplimiento y permitiría el uso de este tipo de estrategias predictivas en una gran mayoría de los pacientes. Actualmente estaríamos limitados a pacientes con gran motivación y adherencia. Además la recogida automática nos podría llegar a dar información con una granularidad temporal mucho mayor, incluyendo patrones de actividad horarios, una información cualitativamente superior que podría dar lugar a modelos mucho más exactos. 3. Uso de algoritmos más complejos técnicamente Debido a nuestra propia limitación, hemos usado algoritmos relativamente fáciles de implementar. Sería sumamente interesante usar otro tipo de aproximaciones como por ejemplo Deep Learning, Cerebros de Markov o algoritmos genéticos, ya que probablemente tendrían rendimientos superiores. También nos gustaría usar algoritmos específicos de aprendizaje automático sobre series temporales multivariables, que evitaría el uso de variables derivadas. 4. Explorar más detalladamente la entropía en nuestras series de datos Otro tema colateral que tras nuestro estudio nos ha resultado de gran interés son las variaciones en la entropía de la ansiedad (y otras variables) y su relación con los estados relacionarlo con los estados de mayor o menor estabilidad en el trastorno bipolar, aplicando los avances en teoría de sistemas (Dai, 2012). 5. Integrar en el modelo la predicción de la depresión Usar un modelo más complejo con variables intermedias que representen una energía de reserva, para poder predecir también la sintomatología depresiva. 108 Bibliografía Achinstein, P. (1968). Concepts of science: A philosophical analysis. Agelink, M. W., Boz, C., Ullrich, H., & Andrich, J. (2002). Relationship between major depression and heart rate variability. Clinical consequences and implications for antidepressive treatment. Psychiatry Research, 113(1-2), 139–149. Akiskal, H. S., & Tohen, M. (2007). Bipolar psychopharmacotherapy: caring for the patient. (H. Akiskal & T. M, Eds.) (1st ed.). Wiley.œ Akiskal, H. S., Azorin, J. M., & Hantouche, E. G. (2003). Proposed multidimensional structure of mania: beyond the euphoric-dysphoric dichotomy. Journal of Affective Disorders, 73(1-2), 7–18. Alelyani, S., Tang, J., & Liu, H. (2018). Feature Selection for Clustering: A Review. In Data Clustering (1st ed., pp. 29–60). Chapman and Hall/CRC. Alloy, L. B., & Abramson, L. Y. (2010). The Role of the Behavioral Approach System (BAS) in Bipolar Spectrum Disorders. Current Directions in Psychological Science, 19(3), 189– 194. Alloy, L. B., Ng, T. H., Titone, M. K., & Boland, E. M. (2017). Circadian Rhythm Dysregulation in Bipolar Spectrum Disorders. Current Psychiatry Reports, 19(4), 21. Alloy, L. B., Ng, T. H., Titone, M. K., & Boland, E. M. (2017). Circadian Rhythm Dysregulation in Bipolar Spectrum Disorders. Current Psychiatry Reports, 19(4), 21. American Psychiatric Association (APA), 2013. Diagnostic and Statistical Manual of Mental Disorders, fifth edition (DSM-5). American Psychiatric Press. Ancoli-Israel, S., Martin, J. L., Blackwell, T., Buenaver, L., Liu, L., Meltzer, L. J., et al. (2015). The SBSM Guide to Actigraphy Monitoring: Clinical and Research Applications. Behavioral Sleep Medicine, 13(sup1), S4–S38. Angst, J., & Marneros, A. (2001). Bipolarity from ancient to modern times: conception, birth and rebirth. Journal of Affective Disorders, 67(1-3), 3–19. Bauer, M., Glenn, T., Alda, M., Andreassen, O. A., Ardau, R., Bellivier, F., et al. (2012). Impact of sunlight on the age of onset of bipolar disorder. Bipolar Disorders, 14(6), 654– 663. Bauer, M., Grof, P., Rasgon, N., Bschor, T., Glenn, T., & Whybrow, P. C. (2006). Temporal relation between sleep and mood in patients with bipolar disorder. Bipolar Disorders, 8(2), 160–167. Ben Bullock, McGlashan, E. M., Burns, A. C., Lu, B. S., & Cain, S. W. (2019). Traits related to bipolar disorder are associated with an increased post-illumination pupil response. Psychiatry Research, 278, 35–41. Bentes, S., Menezes, R. (2012). Entropy: A new measure of stock market volatility? Journal of Physics: Conference Series 394(1), 012033. Bocchio-Chiavetto, L., Zanardini, R., Bortolomasi, M., Abate, M., Segala, M., Giacopuzzi, M., et al. (2006). Electroconvulsive Therapy (ECT) increases serum Brain Derived 109 Neurotrophic Factor (BDNF) in drug resistant depressed patients. European Neuropsychopharmacology, 16(8), 620–624. Bolger, N., Davis, A., Rafaeli, E. (2003). Diary Methods: Capturing Life as it is Lived Psychology 54(1), 579-616. Bonsall, M. B., Wallace-Hadrill, S. M. A., Geddes, J. R., Goodwin, G. M., & Holmes, E. A. (2011). Nonlinear time-series approaches in characterizing mood stability and mood instability in bipolar disorder. Proceedings. Biological Sciences / the Royal Society, 279(1730), 916–924. Bonsall, M., Geddes, J., Goodwin, G., Holmes, E. (2015). Bipolar disorder dynamics: affective instabilities, relaxation oscillations and noise Journal of The Royal Society Interface 12(112), 20150670 - 11. Borbély, A. (1982). A two process model of sleep regulation. Human neurobiology 1(3), 195-204. Brown, E., Suppes, T. (1998). Mood Symptoms during Corticosteroid Therapy: A Review Harvard Review of Psychiatry 5(5), 239-246. Carver, C. (2010). Pleasure as a sign you can attend to something else: Placing positive feelings within a general model of affect. Cognition and Emotion, 17(2), 241–261. Cassidy, F., Murry, E., Forest, K., & Carroll, B. J. (1998). Signs and symptoms of mania in pure and mixed episodes. Journal of Affective Disorders, 50(2-3), 187–201. Chen, KY, & Bassett, DRjr. (2005). The Technology of Accelerometry-Based Activity Monitors: Current and Future. Medicine & Science in Sports & Exercise, 37(Supplement), S490–S500. Cheng, C., Sa-Ngasoongsong, A., Beyca, O., Le, T., Yang, H., Kong, Z. J., & Bukkapatnam, S. T. S. (2015). Time series forecasting for nonlinear and non-stationary processes: a review and comparative study. IIE Transactions, 47(10), 1053–1071. Chengappa, K. N. R., Baker, R. W., Shao, L., Yatham, L. N., Tohen, M., Gershon, S., & Kupfer, D. J. (2003). Rates of response, euthymia and remission in two placebo-controlled olanzapine trials for bipolar mania. Bipolar Disorders, 5(1), 1–5. Cover, T., Hart, P. (1967). Nearest neighbor pattern classification IEEE Transactions on Information Theory 13(1), 21-27. Dai, L., Vorselen, D., Korolev, K., Gore, J. (2012). Generic Indicators for Loss of Resilience Before a Tipping Point Leading to Population Collapse Science 336(6085), 1175-1177. Damasio, A. (2011). En busca de Spinoza. (2005 ed.). Barcelona: Destino. Dennett, D. C. (1996). Kinds of Minds: Towards an Understanding of Consciousness (Science Masters S.). (12 August 1996). Devasena, C. L., Sumathi, T., Gomathi, V. V., & Hemalatha, M. (2011). Effectiveness evaluation of rule based classifiers for the classification of iris data set. Bonfring International Journal of Man Machine Interface, 1(Special Issue Inaugural Special Issue), 05-09. Dey, A. (2016). Machine Learning Algorithms: A Review International Journal of Computer Science and Information Technologies 7(3), 1174-1179. 110 Douc, R., Moulines, E., & Stoffer, D. (2014). Nonlinear time series: Theory, methods and applications with R examples. Chapman and Hall/CRC. Duman, R. S., Heninger, G. R., & Nestler, E. J. (1997). A molecular and cellular theory of depression. Archives of General Psychiatry, 54(7), 597–606. Eidelman, P., Talbor, L., Gruber, J., Hairston, I., Harvey, A. (2010). Sleep architecture as correlate and predictor of symptoms and impairment in inter‐episode bipolar disorder: taking on the challenge of medication effects Journal of Sleep Research 19(4), 516-524. Elboga, G., & Sayiner, Z. A. (2018). Rare cause of manic period trigger in bipolar mood disorder: testosterone replacement. BMJ Case Reports, 2018, bcr–2018–225108. Faurholt-Jepsen et al (2012). Differences in psychomotor activity in patients suffering from unipolar and bipolar affective disorder in the remitted or mild/moderate depressive state. Journal of Affective Disorders, 141(2-3), 457–463. Faurholt-Jepsen, M., Busk, J., Frost, M., Vinberg, M., Christensen, E. M., Winther, O., et al. (2016). Voice analysis as an objective state marker in bipolar disorder. Nature Publishing Group, 1–8. Faurholt-Jepsen, M., Ritz, C., Frost, M., Mikkelsen, R. L., Christensen, E. M., Bardram, J., et al. (2015). Mood instability in bipolar disorder type I versus type II-continuous daily electronic self-monitoring of illness activity using smartphones. Journal of Affective Disorders, 186(C), 342–349. Faurholt-Jepsen, M., Vinberg, M., Frost, M., Christensen, E. M., Bardram, J., & Kessing, L. V. (2014). Daily electronic monitoring of subjective and objective measures of illness activity in bipolar disorder using smartphones. BMC Psychiatry, 14(1), 1–12. Fernandes, B. S., Gama, C. S., Ceresér, K. M., Yatham, L. N., Fries, G. R., Colpo, G., et al. (2011). Brain-derived neurotrophic factor as a state-marker of mood episodes in bipolar disorders: a systematic review and meta-regression analysis. Journal of Psychiatric Research, 45(8), 995–1004. Ferreira, A., Figueiredo, M. (2012). Efficient feature selection filters for high-dimensional data Pattern Recognition Letters 33(13), 1794-1804. https://dx.doi.org/10.1016/ j.patrec.2012.05.019 Fox, A. S., Regina, C. L., Shackman, A. J., & Davidson, R. J. (Eds.). (2018). The Nature of Emotion (Second edition). Freeman James, A., & Skapura David, M. (1993). Redes Neuronales. Algoritmos, aplicaciones y técnicas de programación. Gelman, A. (2008). Scaling regression inputs by dividing by two standard deviations Statistics in Medicine 27(15), 2865-2873. Geoffroy, P. A., Bellivier, F., Scott, J., & Etain, B. (2014). Seasonality and bipolar disorder_ A systematic review, from admission rates to seasonality of symptoms. Journal of Affective Disorders, 168(C), 210–223. Gitlin, M. J., Swendsen, J., Heller, T., & Hammen, C. (1995). Relapse and impairment in bipolar disorder. American Journal of Psychiatry, (152), 1635–1640. Glass, L. (2015). Dynamical disease: Challenges for nonlinear dynamics and medicine. Chaos: an Interdisciplinary Journal of Nonlinear Science, 25(9), 097603–12. 111 Glass, L. (2015). Dynamical disease: Challenges for nonlinear dynamics and medicine. Chaos: an Interdisciplinary Journal of Nonlinear Science, 25(9), 097603–12. Glenn, T., Whybrow, P. C., Rasgon, N., Grof, P., Alda, M., Baethge, C., & Bauer, M. (2006). Approximate entropy of self-reported mood prior to episodes in bipolar disorder. Bipolar Disorders, 8(5 Pt 1), 424–429. Goldbeter, A. (2011). A model for the dynamics of bipolar disorders. Progress in Biophysics and Molecular Biology, 105(1-2), 119–127. Gomez Villegas, M. A. (2005). Inferencia estadística. Ediciones Díaz de Santos. Gonda, X., Pompili, M., Serafini, G., Montebovi, F., Campi, S., Dome, P., et al. (2012). Suicidal behavior in bipolar disorder: epidemiology, characteristics and major risk factors. Journal of Affective Disorders, 143(1-3), 16–26. Gonzalez-Pinto, A., Ballesteros, J., affective, A. A. J. O., 2003. (n.d.). Principal components of mania. Journal of Affective Disorders. Goodwin, F. K., & Jameson, K. R. (2007). Manic-Depressive Illness (2nd ed.). Oxford University Press. Gottschalk, A., Bauer, M. S., & Whybrow, P. C. (1995). Evidence of chaotic mood variation in bipolar disorder. Archives of General Psychiatry, 52(11), 947–959. Gottschalk, A., Bauer, M., Whybrow, P. (1995). Evidence of Chaotic Mood Variation in Bipolar Disorder Archives of General Psychiatry 52(11), 947-959. Gray, J. A. (1990). Brain Systems that Mediate both Emotion and Cognition. Cognition and Emotion, 4(3), 269–288. Gruber, J., Miklowitz, D. J., Harvey, A. G., Frank, E., Kupfer, D., Thase, M. E., et al. (2011). Sleep matters: Sleep functioning and course of illness in bipolar disorder. Journal of Affective Disorders, 134(1-3), 416–420. Handayani, D., Yaacob, H., International, A. R. T. 5., 2014. (n.d.). Systematic review of computational modeling of mood and emotion. Ieeexplore.Ieee.org Hanwella, R., & de Silva, V. A. (2011). Signs and symptoms of acute mania: a factor analysis. BMC Psychiatry, 11(1), 137. Heath, R.A. , & Murray, G. (2016). Multifractal dynamics of activity data in bipolar disorder: Towards automated early warning of manic relapse. Fractal Geometry and Nonlinear Analysis in Medicine and Biology, 1(4), 1–10. Hellsten, J., Wennström, M., Mohapel, P., Ekdahl, C. T., Bengzon, J., & Tingström, A. (2002). Electroconvulsive seizures increase hippocampal neurogenesis after chronic corticosterone treatment. European Journal of Neuroscience, 16(2), 283–290. Jackson, A., Cavanagh, J., Scott, J. (2003). A systematic review of manic and depressive prodromes Journal of Affective Disorders 74(3), 209 - 217. Jaggar, M., Fanibunda, S. E., Ghosh, S., Duman, R. S., & Vaidya, V. A. (n.d.). The Neurotrophic Hypothesis of Depression Revisited: New Insights and Therapeutic Implications. In Neurobiology of Depression (2019 ed., pp. 43–62). Academic Press. Johnson, S. L., Cueller, A. K., Ruggero, C., Winett-Perlman, C., Goodnick, P., White, R., & Miller, I. (2008). Life events as predictors of mania and depression in bipolar I disorder. Journal of Abnormal Psychology, 117(2), 268–277.Joyce, P. R. (2008). Classification of 112 Mood Disorders in DSM-V and DSM-VI. Australian & New Zealand Journal of Psychiatry, 42(10), 851–862. Kinase, Y., & Venture, G. (2013). Estimating mood variation from MPF of EMG during walking. Conference Proceedings : ... Annual International Conference of the IEEE Engineering in Medicine and Biology Society. IEEE Engineering in Medicine and Biology Society. Annual Conference, 2013, 4981–4984. http://doi.org/10.1109/ EMBC.2013.6610666 Koenders, M. A., Giltay, E. J., Spijker, A. T., Hoencamp, E., Spinhoven, P., & Elzinga, B. M. (2014). Stressful life events in bipolar I and II disorder_ Cause or consequence of mood symptoms? Journal of Affective Disorders, 161(C), 55–64. Kotsiantis, S. (2007). Supervised Machine Learning: A Review of Classification Techniques Informatica 31, 249-268. Koukopoulos, A. (2006). The Primacy of Mania. Bipolar Psychopharmacotherapy (pp. 169–192). Chichester, UK: John Wiley & Sons, Ltd. Lam, D., & Wong, G. (2005). Prodromes, coping strategies and psychological interventions in bipolar disorders. Clinical Psychology Review, 25(8), 1028–1042. Lantz, B. (2019). Machine learning with R: expert techniques for predictive modeling. Packt Publishing Ltd. Leboyer, M., Henry, C., Martinot, M. L. P., & Bellivier, F. (2005). Age at onset in bipolar affective disorders: a review. Bipolar Disorders, 7(2), 111–118. Lish, J. D., Dime-Meenan, S., Whybrow, P. C., Price, R. A., & Hirschfeld, R. M. (1994). The National Depressive and Manic-depressive Association (DMDA) survey of bipolar members. Journal of Affective Disorders, 31(4), 281–294. Llamocca, P., Urgelés, D., Cukic, M., & Lopez, V. (2019, November). Bip4Cast: Some advances in mood disorders data analysis. In Proceedings of the 1st International Alan Turing Conference on Decision Support and Recommender Systems, London. Logan, R. W., & McClung, C. A. (2018). Rhythms of life: circadian disruption and brain disorders across the lifespan. Jjjj, 20(1), 1–17. López, V., Urgelés, D., Sánchez, Ó., & Valverde, G. (2017). Big Data in Healthcare and Social Sciences: Bip4Cast as a CAD system. International Journal of Information Systems and Social Change (IJISSC), 8(3), 1-16. López, V., Valverde, G., Anchiraico, J. C., & Urgelés, D. (2016). Specification of a Cad Prediction System for Bipolar Disorder. In Uncertainty Modelling in Knowledge Engineering and Decision Making: Proceedings of the 12th International FLINS Conference (pp. 162-167). Luppino, F. S., de Wit, L. M., Bouvy, P. F., Stijnen, T., Cuijpers, P., Penninx, B. W. J. H., & Zitman, F. G. (2010). Overweight, Obesity, and Depression: A Systematic Review and Meta-analysis of Longitudinal Studies. Archives of General Psychiatry, 67(3), 220–229. Mackey, M. C., & Glass, L. (1977). Oscillation and chaos in physiological control systems. Science, 197(4300), 287–289. Mackey, M. C., & Milton, J. (1987). Dynamical Diseases. Annals of the New York Academy of Sciences, 504(1), 16–32. 113 MacKinnon, D., Pies, R. (2006). Affective instability as rapid cycling: theoretical and clinical implications for borderline personality and bipolar spectrum disorders Bipolar Disorders 8(1), 1-14. MacQueen, G. M., Marriott, M., Begin, H., Robb, J., Joffe, R. T., & Young, L. T. (2003). Subsyndromal symptoms assessed in longitudinal, prospective follow-up of a cohort of patients with bipolar disorder. Bipolar Disorders, 5(5), 349–355. Mahanani, W.R. (2019, February 21). Database: Global Health Estimates 2016. (WHO). Obtenida en http://www.who.int/healthinfo/global_burden_disease/en/[ Base de datos de la WHO acerca de la carga de morbimortalidad de las enfermedades en el mundo.] Acceso 21 de febrero, 2019. Malhi, G., Irwin, L., Hamilton, A., Morris, G., Boyce, P., Mulder, R., Porter, R. (2018). Modelling mood disorders: An ACE solution? Bipolar Disorders 20(10), 4 - 16. Mansur, R., Lee, Y., McIntyre, R., Brietzke, E. (2020). What is bipolar disorder? A disease model of dysregulated energy expenditure Neuroscience & Biobehavioral Reviews 113(), 529-545. Massart, R., Mongeau, R., & Lanfumey, L. (2012). Beyond the monoaminergic hypothesis: neuroplasticity and epigenetic changes in a transgenic mouse model of depression. Philosophical Transactions of the Royal Society B: Biological Sciences, 367(1601), 2485– 2494. McClung, C. A. (2007). Circadian genes, rhythms and the biology of mood disorders. Pharmacology & Therapeutics, 114(2), 222–232. Medici, C. R., Vestergaard, C. H., Hadzi-Pavlovic, D., Munk-Jørgensen, P., & Parker, G. (2016). Seasonal variations in hospital admissions for mania_ Examining for associations with weather variables over time. Journal of Affective Disorders, 205(C), 81–86. Meinhard, N., Kessing, L. V., & Vinberg, M. (2013). The role of estrogen in bipolar disorder, a review. Nordic Journal of Psychiatry, 68(2), 81–87. Merikangas, K. R., Jin, R., He, J.-P., Kessler, R. C., Lee, S., Sampson, N. A., et al. (2011). Prevalence and Correlates of Bipolar Spectrum Disorder in the World Mental Health Survey Initiative. Archives of General Psychiatry, 68(3), 241–23. Mistlberger, R. E., Antle, M. C., Glass, J. D., & Miller, J. D. (2010). Behavioral and Serotonergic Regulation of Circadian Rhythms. Biological Rhythm Research, 31(3), 240– 283. Molnar, G., Feeney, M. G., & Fava, G. A. (1988). Duration and symptoms of bipolar prodromes. The American Journal of Psychiatry, 145(12), 1576–1578. Moore, P. J., Little, M. A., McSharry, P. E., Geddes, J. R., & Goodwin, G. M. (2012). Forecasting depression in bipolar disorder. IEEE Transactions on Biomedical Engineering. Morselli, P., Elgie, R., Cesana, B. (2004). GAMIAN‐Europe/BEAM survey II: cross‐national analysis of unemployment, family history, treatment satisfaction and impact of the bipolar disorder on life style Bipolar Disorders 6(6), 487-497. Mousavizadegan, S., & Maroufi, M. (2018). Comparison of salivary testosterone levels in different phases of bipolar I disorder and control group. Journal of Research in Medical Sciences : the Official Journal of Isfahan University of Medical Sciences, 23, 31. 114 Murray, G., & Harvey, A. (2010). Circadian rhythms and sleep in bipolar disorder. Bipolar Disorders, 12(5), 459–472. Murray, G., Goldstone, E., & Cunningham, E. (2007). Personality and the predisposition(s) to bipolar disorder: heuristic benefits of a two-dimensional model. Bipolar Disorders, 9(5), 453–461. Nováková, M., Praško, J., Látalová, K., Sládek, M., & Sumová, A. (2014). The circadian system of patients with bipolar disorder differs in episodes of mania and depression. Bipolar Disorders, 17(3), 303–314. Ortiz et al. (2019). Nonlinear dynamics of mood regulation in unaffected first-degree relatives of bipolar disorder patients. Journal of Affective Disorders, 243, 274–279. Ortiz, A., Bradler, K., Garnham, J., Slaney, C., & Alda, M. (2014). Nonlinear dynamics of mood regulation in bipolar disorder. Bipolar Disorders, 17(2), 139–149. Ortiz, A., Bradler, K., Hintze, A. (2018). Episode forecasting in bipolar disorder: Is energy better than mood? Bipolar Disorders 20(5), 470 - 476. Palagini, L., Baglioni, C., Ciapparelli, A., Gemignani, A., Riemann, D. (2013). REM sleep dysregulation in depression: State of the art Sleep Medicine Reviews 17(5), 377-390. Palomo T, Lerchundi E, Coca MC y Gómez Bosque P. Efectos del electroshock crónico sobre las sinapsis de la corteza cerebral en cobayas. Neurología 1976. 17: 237-59. Perry, A., Tarrier, N., Morriss, R., McCarthy, E., Limb, K. (1999). Randomised controlled trial of efficacy of teaching patients with bipolar disorder to identify early symptoms of relapse and obtain treatment. BMJ (Clinical research ed.) 318(7177), 149 - 153. Picardi, A., Battisti, F., de Girolamo, G., Morosini, P., Norcio, B., Bracco, R., & Biondi, M. (2008). Symptom structure of acute mania: A factor study of the 24-item Brief Psychiatric Rating Scale in a national sample of patients hospitalized for a manic episode. Journal of Affective Disorders, 108(1-2), 183–189. Pini, S., de Queiroz, V., Pagnin, D., Pezawas, L., Angst, J., Cassano, G. B., & Wittchen, H.-U. (2005). Prevalence and burden of bipolar disorders in European countries. European Neuropsychopharmacology, 15(4), 425–434. Portella, P. L., Čukić, M., Junestrand, A., Urgelés, D., & López, V. L. (2018). Data source analysis in mood disorder research. In XVIII Conferencia de la Asociación Española para la Inteligencia Artificial (CAEPIA 2018) 23-26 de octubre de 2018 Granada, España (pp. 893-898). Rasgon, N., Bauer, M., Glenn, T., Elman, S., & Whybrow, P. C. (2003). Menstrual cycle related mood changes in women with bipolar disorder. Bipolar Disorders, 5(1), 48–52. Ratcliffe, M. (2009). The Phenomenology and Neurobiology of Moods and Emotions. In D. Schmicking & S. Gallagher (Eds.), Handbook of Phenomenology and Cognitive Science (Vol. 59, pp. 123–140). Dordrecht: Springer Netherlands. Reece, A. G., Reagan, A. J., Lix, K. L. M., Dodds, P. S., Danforth, C. M., & Langer, E. J. (2017). Forecasting the onset and course of mental illness with Twitter data. Scientific Reports, 1–11. Rosenblat, J., McIntyre, R. (2017). Bipolar Disorder and Immune Dysfunction: Epidemiological Findings, Proposed Pathophysiology and Clinical Implications Brain Sciences 7(11), 144. 115 Rossi, A., Daneluzzo, E., Arduini, L., Di Domenico, M., Pollice, R., & Petruzzi, C. (2001). A factor analysis of signs and symptoms of the manic episode with Bech-Rafaelsen Mania and Melancholia Scales. Journal of Affective Disorders, 64(2-3), 267–270. Ruggero, C. J., Kotov, R., Watson, D., Kilmer, J. N., Perlman, G., & Liu, K. (2014). Beyond a single index of mania symptoms: structure and validity of subdimensions. Journal of Affective Disorders, 161, 8–15. Rumelhart, D., Hinton, G., Williams, R. (1986). Learning representations by back- propagating errors Nature 323(6088), 533-536. Saravanan, R., Sujatha, P. (2018). A State of Art Techniques on Machine Learning Algorithms: A Perspective of Supervised Learning Approaches in Data Classification 2018 Second International Conference on Intelligent Computing and Control Systems (ICICCS) 00(), 945-949. Schmider, J., Lammers, C. H., Gotthardt, U., Dettling, M., Holsboer, F., & Heuser, I. J. (1995). Combined dexamethasone/corticotropin-releasing hormone test in acute and remitted manic patients, in acute depression, and in normal controls: I. Bps, 38(12), 797– 802. Scott, J., Murray, G., Henry, C., Morken, G., JAMA, E. S., 2017. (2018). Activation in bipolar disorders: a systematic review. JAMA Psychiatry, 92, 477–485. Shannon, C. (1948). A Mathematical Theory of Communication Bell System Technical Journal 27(3), 379-423. Shiffman, S., Stone, A., Hufford, M. (2008). Ecological Momentary Assessment Annual Review of Clinical Psychology 4(1), 1-32. Souetre, E., Salvati, E., Wehr, T. A., Sack, D. A., Krebs, B., & Darcourt, G. (1988). Twenty- four-hour profiles of body temperature and plasma TSH in bipolar patients during depression and during remission and in normal control subjects. The American Journal of Psychiatry, 145(9), 1133–1137. Suppes, T., Eberhard, J., Lemming, O., Young, A., McIntyre, R. (2017). Anxiety, irritability, and agitation as indicators of bipolar mania with depressive symptoms: a post hoc analysis of two clinical trials International Journal of Bipolar Disorders 5(1), 36. Tinbergen, N. (1979). El estudio del instinto (Siglo XXI). México. van Hees, V. T., Sabia, S., Anderson, K. N., Denton, S. J., Oliver, J., Catt, M., et al. (2015). A Novel, Open Access Method to Assess Sleep Duration Using a Wrist-Worn Accelerometer. PLoS ONE, 10(11), e0142533–13. Van Meter et al. (2016). The Bipolar Prodrome: Meta-Analysis of Symptom Prevalence Prior to Initial or Recurrent Mood Episodes. Journal of the American Academy of Child & Adolescent Psychiatry, 55(7), 543–555. Vieta, E., Martínez-de-Osaba, M., Colom, F., Martínez-Arán, A., Benabarre, A., Gastó, C. (1999). Enhanced corticotropin response to corticotropin-releasing hormone as a predictor of mania in euthymic bipolar patients Psychological Medicine 29(4), 971-978. Voss, A., Baier, V., Schulz, S., & Bar, K. J. (2006). Linear and nonlinear methods for analyses of cardiovascular variability in bipolar disorders. Bipolar Disorders, 8(5 Pt 1), 441–452. 116 Wahbeh, A. H., Al-Radaideh, Q. A., Al-Kabi, M. N., & Al-Shawakfa, E. M. (2011). A comparison study between data mining tools over some classification methods. International Journal of Advanced Computer Science and Applications, 8(2), 18-26. Watson, D., Clark, L. A., & Tellegen, A. (n.d.). Mood and Temperament. 2000. The Guilford Press. Waxmonsky, J. A., Thomas, M. R., Miklowitz, D. J., Allen, M. H., Wisniewski, S. R., Zhang, H., et al. (2005). Prevalence and correlates of tobacco use in bipolar disorder: data from the first 2000 participants in the Systematic Treatment Enhancement Program. General Hospital Psychiatry, 27(5), 321–328. Web de la CIE Organización Mundial de la salud (WHO). https://icd.who.int. Acceso 20 de Marzo, 2019. Wilson, E. (2017). On Human Nature https://dx.doi.org/10.1016/ b978-0-12-420190-3.06001-4 Wong, Y. L., Kulambil, P. R., Ashawesh, K., Murthy, N. P. N., Syed, A., & Sankar, S. (2009, March). Hypomania in a patient receiving testosterone replacement. In Society for Endocrinology BES 2009 (Vol. 19). BioScientifica. Wooderson, S. C., Gallagher, P., Watson, S., & Young, A. H. (2018). An exploration of testosterone levels in patients with bipolar disorder. BJPsych Open, 1(2), 136–138. World Health Organization. (1992). The ICD-10 classification of mental and behavioural disorders: Clinical descriptions and diagnostic guidelines. Geneva: World Health Organization. Wulff, K., Gatti, S., Wettstein, J. G., & Foster, R. G. (2010). Sleep and circadian rhythm disruption in psychiatric and neurodegenerative disease. IIII, 11(8), 589–599. Young, A. H. (2006). Antiglucocoticoid treatments for depression. Australian & New Zealand Journal of Psychiatry, 40(5), 402–405. Young, R. C., Biggs, J. T., Ziegler, V. E., & Meyer, D. A. (1978). A rating scale for mania: reliability, validity and sensitivity. The British Journal of Psychiatry, 133(5), 429–435. 117 118 Anexo I: Unidad de tratamiento del trastorno bipolar UBIP es una unidad ambulatoria que ofrece servicios de evaluación, diagnóstico y tratamiento a pacientes adultos con diagnóstico de TB mediante un  abordaje integral e individualizado, incluyendo seguimiento individual por enfemería, psiquiatría y psicología, asó como terapia grupal y seguimiento online. Los usuarios son pacientes no hospitalizados mayores de edad que asisten voluntariamente realizando un tratamiento estructurado con sesiones grupales e individuales, con una frecuencia mínima entre intervenciones individuales de 14 días y una frecuencia máxima de 30 días. El equipo de la unidad, formado por dos psiquiatras, un psicólogo clínico y dos enfermeros se encarga de su seguimiento en todas las etapas de su enfermedad, incluyendo la farmacoterapia, psicoterapia, familia, así como el tratamiento durante los posibles ingresos si fueran necesarios. Se les ofrece accesibilidad y un soporte completo en la línea de otras unidades trastornos afectivos y clínicas del litio. Es una unidad privada a la que se accede de forma libre, siendo su coste cubierto por algunas aseguradoras. Para entrar en el programa se realiza una selección previa por un psiquiatra o psicólogo experto que asegura que se cumplen los criterios de inclusión en la unidad: ser mayor de edad y tener un diagnóstico TB tipo I, TB tipo II, ciclotimia, TB inducido por sustancias, TB bipolar debido a otra afección médica, otro trastorno bipolar, TB y trastorno relacionado no especificado o trastorno esquizoafectivo tipo bipolar. 1 Anexo II: Variables del formulario del paciente Variables numéricas Tabaco Nombre: “tabaco” Variable numérica que indica el número de cigarrillos fumados por el paciente. Instrucciones al paciente: “Número de cigarrillos que has fumado hoy (cuéntalos desde el día de ayer a esta misma hora).” Cafeína Nombre en el archivo: “Cafeína” Variable numérica que indica el número de mg de cafeína ingeridos por el paciente. Instrucciones al paciente: “Indica la cantidad total de cafeína que has consumido hoy. Te recordamos cuánta cafeína tienen algunas bebidas: Café 45 ml = 30 Café 150 ml = 90 Café exprés = 90 Lata de cola 330ml = 30 1 Taza de té negro = 60 Lata de Red Bull 250 ml = 80” Hora de inicio Nombre en el archivo: “Hora de inicio” Variable numérica temporal (en horas decimales) generada automáticamente cuando el paciente abre el formulario. Hora a la que te dormiste Nombre en el archivo: “Hora a la que te dormiste” Variable numérica temporal (horas decimales) que indica la hora a la que el paciente cree haberse dormido. Instrucciones al paciente: “Pon la hora a la que crees que te dormiste ayer (no a la que te acostaste). El formato debe ser HH:MM, es decir:- once de la noche. 23:00 - doce y media. 00:30 - una de la mañana. 1:00” Despertar Nombre en el archivo: “despertar” Variable numérica temporal (hora decimal) que indica la hora a la que el paciente cree haberse despertado. Instrucciones al paciente: “Pon la hora a la que te has despertado hoy. Si te has despertado varias veces, pon la hora de la última vez que te has despertado. Formato HH:MM igual que en anterior pregunta.” 2 Variables tipo Likert En estas variables se le pide al paciente que estime dentro de una escala semicuantitativa el valor subjetivo de una dimensión de su conducta. A pesar de que hay una indicación general al paciente para rellenar cada variable (indicada en “Instrucciones al paciente”) . Hay dos tipos variables según el número de ítems en la escala Likert: - Monopolares: escala entre 1 y 5 (5 items) - Bipolares: escala ente -3 y +3 (7 items) La elección entre monopolio y bipolar se ha realizado según parecía más intuitivo para los pacientes: Estado de ánimo Nombre en el archivo: “Estado de ánimo” Variable cuasicuantitativa (ordinal) que indica desde el punto de vista del paciente cuál ha sido su estado de ánimo medio a lo largo del día, definido “estado de ánimo” según las instrucciones al paciente. Instrucciones al paciente: “Resume cómo ha sido tu estado de ánimo en el día de hoy en un rango de -3 a + 3, siendo 0 la eutimia. La pregunta no se refiere al momento justo de realizar el test, sino a tu estado de ánimo medio a lo largo de todo el día. Suele ser útil tener como referencia comparativa el valor que has puesto el día anterior, señalado por la aplicación. -3 Grado máximo de depresión -2 grado intermedio de depresión -1 depresión leve, apenas perceptible 0 Eutimia o normalidad 1 euforia o irritabilidad leve, apenas perceptible 2 grado intermedio de euforia o irritabilidad 3 Grado máximo de euforia o irritabilidad” 3 Motivación Nombre en el archivo: “Motivación” Variable cuasicuantitativa (ordinal) que indica desde el punto de vista del paciente cuál ha sido su facilidad para motivarse a lo largo del día. Instrucciones al paciente: “Marca tu grado de motivación. Se refiere a las ganas de hacer cosas, la energía y la actividad que has tenido durante este día. La pregunta no se refiere al momento justo de realizar el test, sino a tu motivación media a lo largo de todo el día. Suele ser útil tener como referencia comparativa el valor que has puesto el día anterior, señalado por la aplicación.Debes marcar entre -3 que sería una motivación muy muy baja, 0 que indicaría la actividad habitual y el 3 el grado máximo: -3 Grado mínimo de motivación -2 grado intermedio de motivación -1 leve disminución en la motivación, apenas perceptible 0 Motivación o energía media, normal. 1 Motivación o ganas de hacer cosas un poco aumentadas 2 grado intermedio de motivación 3 Grado máximo de energía, actividad y motivación.” Ansiedad Nombre en el archivo: “Ansiedad”. Variable cuasicuantitativa (ordinal) que indica desde el punto de vista del paciente cuál ha sido su nivel de ansiedada lo largo del día. 4 Instrucciones al paciente: “Indica si has tenido ansiedad, nerviosismo o angustia durante este día. 1 Ausente 2 Leve y muy ocasional 3 Moderada 4 Grave y continua. 5 Muy grave, incapacitante.” Irritabilidad Nombre en el archivo: “irritabilidad” Variable cuasicuantitativa (ordinal) que indica desde el punto de vista del paciente cuál ha sido su nivel de irritabilidad lo largo del día. Instrucciones al paciente: “Indica cómo has estado de irritable, impaciente o con facilidad para enfadarte durante este día. Es muy difícil ser objetivo. Si tienes dudas, puede preguntar a tus allegados. 1 Muy tranquilo, inalterable, ninguna discusión. 2 Leve tendencia a enfadarse, apenas perceptible. 3 Moderada irritabilidad, claramente apreciable. 4 Muy irritable, dificultades para contenerse. 5 Irritabilidad extrema, incluso agresividad.” Problemas de concentración y atención Nombre en el archivo: “Concentración” Variable cuasicuantitativa (ordinal) que indica desde el punto de vista del paciente cuales han sido sus problemas de atención y concentració a lo largo del día. 5 Instrucciones al paciente: “En esta escala debes marcar cómo te has concentrado y has prestado atención durante el día. Un 1 indicaría que no has tenido ningún problema y has podido concentrarte en todas las situaciones, mientras que un 5 es una total falta de concentración. 1 Buena atención y concentración 2 Leves problemas apenas perceptibles. 3 Problemas moderados, entre el punto 2 y el 4. 4 Dificultades importantes, es difícil seguir una película o leer un texto. 5 Alteración grave, imposibilidad de mantener una conversación.” Calidad del sueño Nombre en el archivo: “Calidad del sueño” Instrucciones al paciente: “Índica cómo has dormido esta última noche, sin tener en cuenta si has precisado medicación para dormir. 1 Sueño adecuado y reparador. 2 Leves problemas de sueño. 3 Moderados problemas de sueño. 4 Apenas he descansado. 5 No he dormido nada.” Variables binarias Son variables con dos valores posibles: SI o NO. Otras Drogas Nombre en el archivo: “Otras Drogas” 6 Instrucciones al paciente: “Indica si has consumido durante este día drogas (sin contar alcohol, tabaco o cafeína).” Alcohol Nombre en el archivo: “Alcohol” Instrucciones al paciente: “Indica si has consumido alcohol en cualquier cantidad. 7 8 Anexo III: Código ##SCRIPTS PRINCIPALES Los principales scripts para realizar los cálculos son lo siguientes: parametrosXXX: lista de los parámetros. Existen varios archivos de lista de parámetros según lo que se necesite calcular. carga_datasets: carga los datasets primitivos, limpia los datos y los une en un único dataset 'diario'. Después une 'diario', 'young' y 'hrsd' en un solo dataset, dando como salida 'todosdatos'. Añade falsas con dias intermedios cuando no hay datos dejando esos espacios en blanco. genera_casos: genera 'todoscasos' y también 'todosnocasos' (con datos de todo los posibles casos, los que tienen variables y los que no se han podido generar porque no existían variables disponibles a pesar de existir young). paso_algoritmos: pasa varios algoritmos con diferentes parámetros y almacena los resultados. Hay versiones ligeramente modificadas para grupo G5 y kernel radial. 1 Instala_packages library(stringi) library(googlesheets) library(dplyr) # transformar data.frames library(httpuv) library(lubridate) # manejo de variables temporales library(imputeTS) #interpolar valores NA library(scales) #usar rescale para normalizar library(readxl) library(gmailr) library(knitr) library(beepr) library('caret') library(rpart) library(rpart.plot) #dibujar arboles rpart library(ggplot2) library(openxlsx) library(scales) #rescale para normalizar library(outliers) #manejo de outliers library(reshape) library(ggthemes) library(beepr) # avisos sonoros library(ROSE) library(gmodels) # modelos library (neuralnet) library(C50) library(class) library(e1071) library(stats) library(rpart) library(rpart.plot) carga_librerias library(stringi) library(googlesheets) library(dplyr)library(httpuv) library(lubridate) library(imputeTS) 2 library(scales) library(readxl) library(gmailr) library(knitr) library(beepr) library('caret') library(rpart) library(rpart.plot) library(ggplot2) library(openxlsx) library(scales) library(outliers) library(reshape) library(ggthemes) library(beepr) library(ROSE) library(gmodels) library (neuralnet) library(C50) library(class) library(e1071) Parametros #Este script se modifica de forma personalizada para cada cálculo. #parámetros generales grupo = nombre del grupo umbralyoung = 5 # Umbral a partir del cual YMRS se considera positivo. toleranciaventana = 2 #tolerancia a NA en ventana distanciaventana = 7 #distancia desde final de la ventana al evento ventanacasos = 13 #amplitud en días de las ventana predictora porcentaje = 0.8 # % entrenamiento #variables que se van a estudiar variables_caso <- c( lista de variables) variables_filtro <- c (lista de variables filtro) 3 Carga_datasets #cargo archivos diario <- as.data.frame (read_excel (path = "datasets/diario total.xlsx")) diariov3 <- as.data.frame (read_excel (path = "datasets/Diario v3.xlsx")) diariov5 <- as.data.frame (read_excel (path = "datasets/BIP v5.0 UBIP (respuestas).xlsx")) # arreglo formato dataset diario etiquetas.diario <- c("inicio", "fin","correo","usuario","animo","ansiedad","irritabilidad", "id", "concentracion", "tabaco", "cafeina", "dormir", "despertar", "otras_drogas", "alcohol", "observaciones", "motivacion","calidad_sueno") names(diario)<-etiquetas.diario #Pongo usuarios en mayusculas diario$id<- toupper (diario$id) ##pasamos usuarios a mayusculas #paso txt a datetime diario$inicio <- dmy_hms (diario$inicio) diario$fin <- dmy_hms (diario$fin) #transformo hora de finalización a 'lentitud' que es el tiempo que tarda en hacerlo con una resta diario$lentitud <- as.numeric(diario$fin-diario$inicio) # transformo textos de escalas Likert -3/+3 tomando solo los dos primeros caracteres o el primero diario$irritabilidad <- strtrim(diario$irritabilidad,2) # cuidado con la tilde de animo... editarla en el archio de diario antes y dejarlo sin tilde diario$animo <- strtrim(diario$animo,2) diario$motivacion <- strtrim(diario$motivacion,2) diario$ansiedad <- strtrim(diario$ansiedad,1) diario$calidad_sueno <- strtrim(diario$calidad_sueno,1) diario$concentracion <- strtrim(diario$concentracion,1) # transformo cafeína a numerico diario$cafeina <- as.numeric(diario$cafeina) ## Transformacion de los textos de horas a duraciones #paso las horas a duraciones en horas numeric diario$dormir <- hm (diario$dormir) diario$despertar <- hm (diario$despertar) diario$dormir = as.numeric (diario$dormir)/ 3600 diario$despertar = as.numeric (diario$despertar)/ 3600 #Pasa horas de dormir a algo correcto: ## Genero duracionsueno diario$duracionsueno <- NA ### Calculo duracionsueno.... 4 for (x in 1:nrow (diario)) { ##Arreglo variable dormir primero #D<12&D>6 ++12 a <- diario$dormir [x] b <- diario$despertar [x] if (a>6 & a<13) diario$dormir [x] = (diario$dormir [x] + 12) #D=12 ->24 if (a>23.9999) diario$dormir [x] = (diario$dormir [x] = 0 ) ## Ahora arreglo con respecto a eso duracionsueno } diario$duracionsueno <- diario$despertar- diario$dormir for (x in 1:nrow (diario)) { #Si Dormir está entre 0 y 6 duracionsueno es la resta y ya está hecho #Si Dormir está entre 13 y 24 le sumo 24 if (diario$dormir [x] >12&diario$dormir [x]<25) { #message ("UNO MAL: ", diario$duracionsueno[ x]) diario$duracionsueno[x] <- (diario$duracionsueno [x])+ 24 #message ("y ahoraa. ", diario$duracionsueno[x]) } } #genero variable del cenit del sueno cenitsueno = dormir + duracionsueno/ 2 diario$cenitsueno <- (as.numeric (diario$despertar)- as.numeric(diario$duracionsueno)/2) # transformar variables a numérico diario$cafeina= as.numeric(diario$cafeina) diario$animo= as.numeric(diario$animo) diario$tabaco= as.numeric(diario$tabaco) diario$irritabilidad= as.numeric(diario$irritabilidad) diario$ansiedad= as.numeric(diario$ansiedad) diario$concentracion= as.numeric(diario$concentracion) diario$calidad_sueno= as.numeric(diario$calidad_sueno) diario$motivacion= as.numeric(diario$motivacion) #transformar cualitativas a numérico for (x in 1:nrow (diario)) { if (diario$alcohol[x] == "Si") diario$alcohol_num [x] = 1 else diario$alcohol_num [x] = 0 } for (x in 1:nrow (diario)) { 5 if (diario$otras_drogas[x] == "Si") diario$otras_drogas_num [x] = 1 else diario$otras_drogas_num [x] = 0 } # creo variable con longitud de las observaciones diario <- mutate (diario, observ_num = nchar (observaciones)) # limpio dataframe de variable no numéricas diario <- diario [,!colnames(diario)=="correo"] diario <- diario [,!colnames(diario)=="otras_drogas"] diario <- diario [,!colnames(diario)=="alcohol"] diario <- diario [,!colnames(diario)=="observaciones"] diario <- diario [,!colnames(diario)=="usuario"] diario <- diario [,!colnames(diario)=="idx"] diario <- diario [,!colnames(diario)=="dormirx"] diario <- diario [,!colnames(diario)=="despertarx"] # Rescato la hora con decimales de la variable inicio para no perder información sobre la hora a la que rellena el test diario$horatest <- (hour (diario$inicio) + (minute (diario$inicio))/60) diario[is.na(diario)] =0 # quito variable fin diario <- diario [,!colnames(diario)=='fin'] # arreglo datos a mano diario$id[diario$id == "GADTA"] <- "GATI" diario$id[diario$id == "GADTI"] <- "GATI" diario$id[diario$id == "GASGA"] <- "CASGA" diario$id[diario$id == "GASCA"] <- "CASGA" diario$id[diario$id == "MAPE"] <- "MAPI" diario$id[diario$id == "RVI"] <- "RIVI" diario$id[diario$id == "RORY"] <- "RORU" diario$id[diario$id == "GOGO"] <- "GOLO" diario$id[diario$id == "MOMA"] <- "MAMA" diario$id[diario$id == "PRAMOS"] <- "RAOR" diario$id[diario$id == "PEVE"] <- "VELU" ##Transformación de DORMIR hist (diario$dormir,24) longi = nrow (diario) for (a in (1:longi)) { bb = diario$dormir [a] if (bb>24) {diario$dormir[a] = bb -24} if (bb>15) {diario$dormir[a] = bb -15} else {diario$dormir[a]= bb +9} } 6 diario$id[diario$id == "MOMA"] <- "MAMA" borrar = count (diario, id) borrar = filter (borrar, n>30) masde30 = borrar$id borrar = count (diario, id) borrar = filter (borrar, n<30) menosde30 = borrar$id diariosinmenosde30 = subset (diario,((diario[,"id"] %in% masde30))) diario = diariosinmenosde30 ggplot (diario, aes (id)) +geom_bar() + theme(axis.text.x = element_text(angle = 90, hjust = 1)) # arreglo dataset diariov3 #### etiquetas.diariov3 <- c("inicio", "fin","correo","usuario", "id", "animo","motivacion", "irritabilidad", "concentracion","ansiedad", "tabaco", "cafeina", "alcohol", "otras_drogas", "calidad_sueno", "dormir", "despertar", "menstruacion", "opcional", "observaciones") names(diariov3)<-etiquetas.diariov3 # creo variable con longitud de las observaciones diariov3 <- mutate (diariov3, observ_num = nchar (observaciones)) # limpio dataframe de variable no numericas diariov3 <- diariov3 [,!colnames(diariov3)=="correo"] diariov3 <- diariov3 [,!colnames(diariov3)=="otras_drogas"] diariov3 <- diariov3 [,!colnames(diariov3)=="alcohol"] diariov3 <- diariov3 [,!colnames(diariov3)=="observaciones"] diariov3 <- diariov3 [,!colnames(diariov3)=="usuario"] diariov3 <- diariov3 [,!colnames(diariov3)=="menstruacion"] diariov3 <- diariov3 [,!colnames(diariov3)=="opcional"] # borro algunas variables diariov3 <- diariov3 [,!colnames(diariov3)=="correo"] diariov3 <- diariov3 [,!colnames(diariov3)=="otras_drogas"] diariov3 <- diariov3 [,!colnames(diariov3)=="alcohol"] diariov3 <- diariov3 [,!colnames(diariov3)=="usuario"] #Pongo usuarios en mayusculas diariov3$id<- toupper (diariov3$id) ##pasamos usuarios a mayusculas diariov3$id[diariov3$id == "GADTI"] <- "GADTA" prueba = unique (diariov3$id) #paso txt a datetime #diariov3$inicio <- dmy_hms (diariov3$inicio) 7 #diariov3$fin <- dmy_hms (diariov3$fin) #transformo hora de finalizacion a 'lentitud' que es el tiempo que tarda en hacerlo con una resta diariov3$lentitud <- as.numeric(diariov3$fin-diariov3$inicio) # transformo textos de escalas Likert -3/+3 tomando solo los dos primeros caracteres o el primero diariov3$irritabilidad <- strtrim(diariov3$irritabilidad,2) # cuidado con la tilde de animo... editarla en el archio de diariov3 antes y dejarlo sin tilde diariov3$animo <- strtrim(diariov3$animo,2) diariov3$motivacion <- strtrim(diariov3$motivacion,2) diariov3$ansiedad <- strtrim(diariov3$ansiedad,1) diariov3$calidad_sueno <- strtrim(diariov3$calidad_sueno,1) diariov3$concentracion <- strtrim(diariov3$concentracion,1) # transformo cafeína a numerico diariov3$cafeina <- as.numeric(diariov3$cafeina) ## Transformación de los textos de horas a duraciones #paso las horas a duraciones en horas numeric diariov3$dormir <- hm (diariov3$dormir) diariov3$despertar <- hm (diariov3$despertar) diariov3$dormir = as.numeric (diariov3$dormir)/ 3600 diariov3$despertar = as.numeric (diariov3$despertar)/ 3600 diariov3 <- na.omit (diariov3) ## Genero duracionsueno diariov3$duracionsueno <- NA ### Calculo duracionsueno.... for (x in 1:nrow (diariov3)) { ##Arreglo variable dormir #D<12&D>6 ++12 a <- diariov3$dormir [x] b <- diariov3$despertar [x] if (a>6 & a<13) diariov3$dormir [x] = (diariov3$dormir [x] + 12) #D=12 ->24 if (a>23.9999) diariov3$dormir [x] = (diariov3$dormir [x] = 0 ) ## Ahora arreglo con respecto a eso duracionsueno } diariov3$duracionsueno <- diariov3$despertar- diariov3$dormir for (x in 1:nrow (diariov3)) { if (diariov3$dormir [x] >12&diariov3$dormir [x]<25) { #message ("UNO MAL: ", diariov3$duracionsueno[ x]) diariov3$duracionsueno[x] <- (diariov3$duracionsueno [x])+ 24 8 #message ("y ahoraa. ", diariov3$duracionsueno[x])}} #genero cenit del sueno diariov3$cenitsueno <- (as.numeric (diariov3$despertar)- as.numeric(diariov3$duracionsueno)/2) # transformar variables a numérico diariov3$cafeina= as.numeric(diariov3$cafeina) diariov3$animo= as.numeric(diariov3$animo) diariov3$tabaco= as.numeric(diariov3$tabaco) diariov3$irritabilidad= as.numeric(diariov3$irritabilidad) diariov3$ansiedad= as.numeric(diariov3$ansiedad) diariov3$concentracion= as.numeric(diariov3$concentracion) diariov3$calidad_sueno= as.numeric(diariov3$calidad_sueno) diariov3$motivacion= as.numeric(diariov3$motivacion) # limpio dataframe diariov3 <- diariov3 [,!colnames(diariov3)=="correo"] diariov3 <- diariov3 [,!colnames(diariov3)=="otras_drogas"] #diariov3 <- diariov3 [,!colnames(diariov3)=="alcohol"] diariov3 <- diariov3 [,!colnames(diariov3)=="observaciones"] diariov3 <- diariov3 [,!colnames(diariov3)=="usuario"] diariov3 <- diariov3 [,!colnames(diariov3)=="idx"] diariov3 <- diariov3 [,!colnames(diariov3)=="dormirx"] diariov3 <- diariov3 [,!colnames(diariov3)=="despertarx"] # Rescato la hora con decimales de la variable inicio para no perder información sobre la hora a la que rellena el test diariov3$horatest <- (hour (diariov3$inicio) + (minute (diariov3$inicio))/60) diariov3[is.na(diariov3)] =0 # quito variable fin diariov3 <- diariov3 [,!colnames(diariov3)=='fin'] # otros fix diariov3$id[diariov3$id == "GADTA"] <- "GATI" diariov3$id[diariov3$id == "GADTI"] <- "GATI" diariov3$id[diariov3$id == "GASGA"] <- "CASGA" diariov3$id[diariov3$id == "GASCA"] <- "CASGA" diariov3$id[diariov3$id == "MAPE"] <- "MAPI" diariov3$id[diariov3$id == "RVI"] <- "RIVI" diariov3$id[diariov3$id == "RORY"] <- "RORU" diariov3$id[diariov3$id == "GOGO"] <- "GOLO" diariov3$id[diariov3$id == "MOMA"] <- "MAMA" diariov3$id[diariov3$id == "PRAMOS"] <- "RAOR" diariov3$id[diariov3$id == "PEVE"] <- "VELU" ##Transformación de DORMIR 9 hist (diariov3$dormir,24) longi = nrow (diariov3) for (a in (1:longi)) { bb = diariov3$dormir [a] if (bb>24) {diariov3$dormir[a] = bb -24} if (bb>15) {diariov3$dormir[a] = bb -15} else {diariov3$dormir[a]= bb +9} } diariov3$id[diariov3$id == "MOMA"] <- "MAMA" borrar = count (diariov3, id) borrar = filter (borrar, n>30) masde30 = borrar$id borrar = count (diariov3, id) borrar = filter (borrar, n<30) menosde30 = borrar$id diariov3sinmenosde30 = subset (diariov3,((diariov3[,"id"] %in% masde30))) diariov3 = diariov3sinmenosde30 ggplot (diariov3, aes (id)) +geom_bar() + theme(axis.text.x = element_text(angle = 90, hjust = 1)) # arreglo dataset diariov5 #### etiquetas.diariov5 <- c("inicio", "id","animo", "motivacion","irritabilidad","concentracion","ansiedad", "tabaco", "cafeina", "alcohol", "calidad_sueno","dormir", "despertar","observaciones","opcional","menstruacion") names(diariov5)<-etiquetas.diariov5 # creo variable con longitud de las observaciones diariov5 <- mutate (diariov5, observ_num = nchar (observaciones)) diariov5[is.na(diariov5$observ_num),]$observ_num = 0 #hago 0 los NA # genero lista de pacientes pacientes <- unique (diario$id) # limpio dataframe de variable diariov5 <- diariov5 [,!colnames(diariov5)=="observaciones"] diariov5 <- diariov5 [,!colnames(diariov5)=="menstruacion"] diariov5 <- diariov5 [,!colnames(diariov5)=="opcional"] diariov5 <- diariov5 [,!colnames(diariov5)=="alcohol"] diariov5 = na.omit (diariov5) #Pongo usuarios en mayúsculas diariov5$id<- toupper (diariov5$id) ##pasamos usuarios a mayusculas diariov5$id[diariov5$id == "GADTI"] <- "GADTA" #transformo hora de finalización a 'lentitud' que es el tiempo que tarda en hacerlo con una resta diariov5$lentitud <- NA 10 # transformo textos de escalas Likert -3/+3 tomando solo los dos primeros caracteres o el primero diariov5$irritabilidad <- strtrim(diariov5$irritabilidad,2) # cuidado con la tilde de animo... editarla en el archio de diario antes y dejarlo sin tilde diariov5$animo <- strtrim(diariov5$animo,2) diariov5$motivacion <- strtrim(diariov5$motivacion,2) diariov5$ansiedad <- strtrim(diariov5$ansiedad,1) diariov5$calidad_sueno <- strtrim(diariov5$calidad_sueno,1) diariov5$concentracion <- strtrim(diariov5$concentracion,1) # transformo cafeína a numerico diariov5$cafeina <- as.numeric(diariov5$cafeina) ## Genero duracionsueno diariov5$duracionsueno <- NA diariov5$dormir = hour (diariov5$dormir) + minute (diariov5$dormir)/60 diariov5$despertar = hour (diariov5$despertar) + minute (diariov5$despertar)/60 ### Calculo duracionsueno.... for (x in 1:nrow (diariov5)) { ##Arreglo variable dormir primero #D<12&D>6 ++12 a <- diariov5$dormir [x] b <- diariov5$despertar [x] if (a>6 & a<13) diariov5$dormir [x] = (diariov5$dormir [x] + 12) #D=12 ->24 if (a>23.9999) diariov5$dormir [x] = (diariov5$dormir [x] = 0 ) } diariov5$duracionsueno <- diariov5$despertar- diariov5$dormir for (x in 1:nrow (diariov5)) { #Si Dormir está entre 0 y 6 duracionsueno es la resta y ya está hecho #Si Dormir está entre 13 y 24 le sumo 24 if (diariov5$dormir [x] >12&diariov5$dormir [x]<25) { #message ("UNO MAL: ", diariov5$duracionsueno[ x]) diariov5$duracionsueno[x] <- (diariov5$duracionsueno [x])+ 24 #message ("y ahoraa. ", diariov5$duracionsueno[x]) } } #genero variable del cenit del sueno cenitsueno = dormir + duracionsueno/ 2 diariov5$cenitsueno <- (as.numeric (diariov5$despertar)- as.numeric(diariov5$duracionsueno)/2) # transformar variables a numérico diariov5$cafeina= as.numeric(diariov5$cafeina) 11 diariov5$animo= as.numeric(diariov5$animo) diariov5$tabaco= as.numeric(diariov5$tabaco) diariov5$irritabilidad= as.numeric(diariov5$irritabilidad) diariov5$ansiedad= as.numeric(diariov5$ansiedad) diariov5$concentracion= as.numeric(diariov5$concentracion) diariov5$calidad_sueno= as.numeric(diariov5$calidad_sueno) diariov5$motivacion= as.numeric(diariov5$motivacion) #transformar cualitativas a numérico # for (x in 1:nrow (diariov5)) { # if (diariov5$alcohol[x] == "Si") diariov5$alcohol_num [x] = 1 # else diariov5$alcohol_num [x] = 0 # } # for (x in 1:nrow (diariov5)) { # if (diariov5$otras_drogas[x] == "Si") diariov5$otras_drogas_num [x] = 1 # else diariov5$otras_drogas_num [x] = 0 # } # Rescato la hora con decimales de la variable inicio para no perder informacion sobre la hora a la que rellena el test diariov5$horatest <- (hour (diariov5$inicio) + (minute (diariov5$inicio))/60) diariov5[is.na(diariov5)] =0 # quito variable fin diariov5 <- diariov5 [,!colnames(diariov5)=='fin'] # arreglo datos a mano diariov5$id[diariov5$id == "GADTA"] <- "GATI" diariov5$id[diariov5$id == "GADTI"] <- "GATI" diariov5$id[diariov5$id == "GASGA"] <- "CASGA" diariov5$id[diariov5$id == "GASCA"] <- "CASGA" diariov5$id[diariov5$id == "MAPE"] <- "MAPI" diariov5$id[diariov5$id == "RVI"] <- "RIVI" diariov5$id[diariov5$id == "RORY"] <- "RORU" diariov5$id[diariov5$id == "GOGO"] <- "GOLO" diariov5$id[diariov5$id == "MOMA"] <- "MAMA" diariov5$id[diariov5$id == "PRAMOS"] <- "RAOR" diariov5$id[diariov5$id == "PEVE"] <- "VELU" # saco lista y el gráfico de pacientes con > 30 datos diariov5$id[diariov5$id == "MOMA"] <- "MAMA" borrar = count (diariov5, id) borrar = filter (borrar, n>30) masde30 = borrar$id 12 borrar = count (diariov5, id) borrar = filter (borrar, n<30) menosde30 = borrar$id diariov5sinmenosde30 = subset (diariov5,((diariov5[,"id"] %in% masde30))) diariov5 = diariov5sinmenosde30 ggplot (diariov5, aes (id)) +geom_bar() + theme(axis.text.x = element_text(angle = 90, hjust = 1)) # uno los tres datasets diariounido = bind_rows(diario,diariov3) diariounido = bind_rows (diariounido, diariov5) diario = diariounido #### Carga intervenciones #### intervenciones <- as.data.frame (read_excel (path = "datasets/ Intervenciones v2.xlsx"))#quito cosas inútiles y cambiando nombre de variables etiquetas.intervenciones <- c("fecha", "fin","correo","nombre","id","alivio", "error","terapeuta", "error1","programada", "error2", "EEAG","error3","error4","error5","error6", "dx", "intervenciones", "error7","error8","error9","error10","tipo", "observaciones", "asiste") names(intervenciones)<-etiquetas.intervenciones intervenciones <- intervenciones [,!colnames(intervenciones)=='fin'] intervenciones <- intervenciones [,!colnames(intervenciones)=='correo'] intervenciones <- intervenciones [,!colnames(intervenciones)=='nombre'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error1'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error2'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error3'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error4'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error5'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error6'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error7'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error8'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error9'] intervenciones <- intervenciones [,!colnames(intervenciones)=='error10'] #Pongo usuarios en mayusculas intervenciones$id<- toupper (intervenciones$id) ##pasamos usuarios a mayusculas # transformo diagnostico a 0 eutimia, 1 manía, -1 depresion, X fase mixta con los dos últimos números # transformo textos de escalas Likert -3/+3 tomando solo los dos primeros caracteres o el primero intervenciones$dx <- as.factor((substr (intervenciones$dx,nchar (intervenciones$dx)-1, nchar (intervenciones$dx)))) 13 intervenciones$programada <- as.factor((substr (intervenciones$programada,nchar (intervenciones$programada)-1, nchar (intervenciones$programada)))) #### Carga young y hrsd#### young <- as.data.frame (read_excel (path = "datasets/Young v2xlsx.xlsx")) hrsd <- as.data.frame (read_excel (path = "datasets/HRSD v21.xlsx")) ### los limpio # quito hora de inicio y finalización, así como variables vacías del principio young <- young [,-1] young <- young [,-1] young <- young [,-1] young <- young [,-1] young <- young [,-1] young <- young [,-1] young <- young [,-1] hrsd <- hrsd [,-1] hrsd <- hrsd [,-1] hrsd <- hrsd [,-1] hrsd <- hrsd [,-1] #renombro nombres de columna con acentos o problemas ASCII colnames(young)[1]<-"euforia" colnames(young)[2]<-"hiperactividad" colnames(young)[3]<-"impulso sexual" colnames(young)[4]<-"sueno" colnames(young)[5]<-"irritabilidad" colnames(young)[6]<-"expresion verbal" colnames(young)[7]<-"curso" colnames(young)[8]<-"contenido" colnames(young)[9]<-"agresividad" colnames(young)[10]<-"apariencia" colnames(young)[11]<-"conciencia.young" colnames(young)[12]<-"id" colnames(young)[13]<-"recoge datos" colnames(young)[14]<-"fecha" #transformo a formato fecha desde POSIX young$fecha <- as.Date (young$fecha) colnames(hrsd)[1]<-"id" colnames(hrsd)[4]<-"depresion" colnames(hrsd)[5]<-"culpa" 14 colnames(hrsd)[7]<-"iprecoz" colnames(hrsd)[8]<-"imedio" colnames(hrsd)[9]<-"itardio" colnames(hrsd)[10]<-"actividad" colnames(hrsd)[11]<-"inhibicion" colnames(hrsd)[12]<-"agitacion" colnames(hrsd)[13]<-"an_psiq" colnames(hrsd)[14]<-"an_som" colnames(hrsd)[15]<-"gastro" colnames(hrsd)[16]<-"somatic" colnames(hrsd)[17]<-"sexo" colnames(hrsd)[18]<-"conciencia" colnames(hrsd)[19]<-"hipocondria" colnames(hrsd)[20]<-"peso" hrsd$fecha = as.Date (hrsd$fecha) # transformo a numéricas hrsd$depresion <- as.numeric (hrsd$depresion) hrsd$culpa <- as.numeric (hrsd$culpa) hrsd$Suicidio <- as.numeric (hrsd$Suicidio) hrsd$iprecoz <- as.numeric (hrsd$iprecoz) hrsd$imedio <- as.numeric (hrsd$imedio) hrsd$itardio <- as.numeric (hrsd$itardio) hrsd$actividad <- as.numeric (hrsd$actividad) hrsd$inhibicion <- as.numeric (hrsd$inhibicion) hrsd$agitacion <- as.numeric (hrsd$agitacion) hrsd$an_psiq <- as.numeric (hrsd$an_psiq) hrsd$an_som <- as.numeric (hrsd$an_som) hrsd$gastro <- as.numeric (hrsd$gastro) hrsd$somatic <- as.numeric (hrsd$somatic) hrsd$sexo <- as.numeric (hrsd$sexo) hrsd$conciencia <- as.numeric (hrsd$conciencia) hrsd$hipocondria <- as.numeric (hrsd$hipocondria) hrsd$peso <- as.numeric (hrsd$peso) young$euforia <- as.numeric (young$euforia) young$hiperactividad <- as.numeric (young$hiperactividad) young$`impulso sexual` <- as.numeric (young$`impulso sexual`) young$sueno <- as.numeric (young$sueno) young$irritabilidad.y<- as.numeric (young$irritabilidad) young$`expresion verbal` <- as.numeric (young$`expresion verbal`) young$curso <- as.numeric (young$curso) 15 young$contenido <- as.numeric (young$contenido) young$agresividad <- as.numeric (young$agresividad) young$apariencia <- as.numeric (young$apariencia) young$conciencia.young <- as.numeric (young$conciencia.young) #### Calculo YOUNG y HDRS young = mutate (young, young = euforia+ hiperactividad+`impulso sexual`+ sueno+ irritabilidad.y + `expresion verbal`+ curso +contenido+ agresividad + apariencia+conciencia.young ) hrsd = mutate (hrsd, hrsd = ( depresion + culpa + Suicidio + iprecoz +imedio + itardio + actividad +inhibicion+ agitacion + an_psiq + an_som + gastro + somatic + sexo + conciencia +hipocondria + peso)) # Escalas transformadas hrsd = mutate (hrsd, hrsd_alt = ( depresion + culpa + Suicidio + iprecoz +imedio + itardio + actividad +inhibicion + an_som + gastro + somatic + sexo + conciencia +hipocondria + peso)) hrsd = mutate (hrsd, borrar = ( Suicidio + iprecoz +imedio + itardio + agitacion + an_psiq)) young [,"young_alt"]= young [,"young"]+hrsd[,"borrar"] ## Añado umbral young <- mutate (young, umbral = young>=umbralyoung) pacientes_ <- unique (diario$id) # combino_datasets for (idfiltro in pacientes_) { print (paste ("Uniendo datos de", idfiltro)) #selecciona datos de usuario, uso subset ya que filter cambia la clase! hrsd.individual <- subset (hrsd, id == idfiltro) young.individual <- subset (young, id == idfiltro) intervenciones.individual = subset (intervenciones, id == idfiltro) #cambio variable de fecha a inicio para que no se cortocircuitee todo names (diario)[1] <- "inicio" # filtro usuarios segun la configuración diario.individual = filter (diario, id==idfiltro) #limpio diario individual sin fecha (NA) diario.individual = filter (diario.individual, !is.na (inicio)) # Convertir diario a datatable con los NA interpolados y todo numérico 16 # hacer datatable con una columna que sea de dates... con una frecuencia diaria, sigo a https://bocoup.com/blog/padding-time-series-with-r #ordeno diario.ordenado <- arrange(diario.individual, inicio) #calculo longitud diario.longitud <- length(diario.ordenado$inicio) # Busco min y max. Como están ordenados, primero y último elementos. tiempo.min <- diario.ordenado$inicio[1] tiempo.max <- diario.ordenado$inicio[diario.longitud] # Genero secuencia de fechas con 1 día de intervalo. Es Date y no POSIX! rango.fechas <- as.Date (seq(tiempo.min, tiempo.max, by="day")) # Creo una variable fecha que es Date y no posix a partir de inicio diario.ordenado <- mutate (diario.ordenado, fecha = as.Date(inicio)) # quito duplicados pero dejo el último:si haces varias entradas en un día, la última es la que vale #ordeno al revés... diario.ordenado <- arrange(diario.ordenado, desc(inicio)) #borro duplicados diario.ordenado <-distinct(diario.ordenado,fecha,.keep_all = TRUE) #lo reordeno diario.ordenado <- arrange(diario.ordenado, inicio) # Convierto rango.fechas en dataframe # Añado rango de fechas en columna called "fecha" con el mismo nombre para luego poder hacer un merge todas.fechas <- data.frame(list(fecha=rango.fechas)) merge.diario <- merge(todas.fechas, diario.ordenado, all=T) #ordeno intervenciones.individual <- arrange(intervenciones.individual, desc(terapeuta)) arreglo variable de fechas de intervenciones para que sea compatible con la fechas de merge.diario y poder hacer un join #uno los datos en table resultado names(intervenciones.individual)[1]<- 'fecha' intervenciones.individual$fecha=as.Date(intervenciones.individual$fecha) resultado <- full_join (merge.diario,intervenciones.individual, by = 'fecha' , copy=FALSE) resultado <- resultado [,!colnames(resultado)=='inicio'] resultado <- resultado [,!colnames(resultado)=='id.x'] resultado <- resultado [,!colnames(resultado)=='id.y'] resultado <- full_join (resultado,young.individual, by = 'fecha' , copy=FALSE) resultado <- full_join (resultado,hrsd.individual, by = 'fecha' , copy=FALSE) resultado <- resultado [,!colnames(resultado)=='inicio'] 17 resultado <- resultado [,!colnames(resultado)=='id.x'] resultado <- resultado [,!colnames(resultado)=='id.y'] resultado$id = idfiltro if (idfiltro == pacientes[1]) { #si es el primer paciente inicializamos datos.final = resultado} if (idfiltro != pacientes[1]) { # si no es el primer paciente merge! datos.final = bind_rows(datos.final, resultado)}} #### Últimos fixes datos.final #### datos.final$irritabilidad.y.y <- NULL datos.final$`recoge datos`<-NULL datos.final$`Recoge datos`<-NULL datos.final = (dplyr::select (datos.final, -alivio, -terapeuta, -programada, -EEAG, -tipo, -observaciones, -asiste)) datos.final$id = as.factor(datos.final$id) # Rescato copia para usarlo después datos.final.completo = datos.final # Borro variables aisladas de young y hdrs datos.final$`impulso sexual`<-NULL datos.final$`expresion verbal`<-NULL datos.final = dplyr::select(datos.final, -intervenciones, -euforia, -hiperactividad, -sueno, -contenido, -agresividad, -apariencia, -conciencia.young,-irritabilidad.y, -curso) datos.final = dplyr::select(datos.final,-depresion,-culpa,-Suicidio,- iprecoz,-imedio,-itardio,-actividad,-inhibicion,-agitacion,-an_psiq,- an_som,-gastro,-somatic,-sexo,-conciencia,-hipocondria,-peso) todosdatos = datos.final 18 Genera_casos #genero todosnocasos vacio todosnocasos = data.frame(id='A',fecha=date(now()),young=0,caso=F ) todosnocasos=todosnocasos[0,] todoscasos = data.frame() # Cargo datos de pacientes ##### pacientes <- todosdatos todospacientes = unique(pacientes$id) for (pacienteid in todospacientes) { paciente <- filter (pacientes, id == pacienteid) #arreglo variables paciente$young <- as.numeric(paciente$young) paciente_df <- dplyr::select (paciente, fecha, young) paciente_df$younginterpolado <- na_interpolation(x = paciente_df$young, option = "stine") filter (paciente, !is.na (young)) -> conyoung conyoung$fecha -> fechasy # combinaciones de variables medidas = c( 'fecha', 'id', 'media', 'mediatotal', 'restamedia', 'max', 'maxtotal', 'restamax', 'min', 'mintotal', 'restamin', 'var', 'vartotal', 'restavar', 'sd', 'sdtotal', 'restasd', 'mediana', 19 'medianatotal', 'restamediana', 'pendiente' ) #Genero casospred casospred <- data.frame () variablescasos <- NA #itero para generar lista de variables de casos ##### for (variable in variables_caso) { for (med in medidas) { variablescasos <- c(variablescasos, paste (variable, med, sep = '_'))}} fechasy <- as.Date (fechasy) diaindex = as.Date ("2018-03-06 UTC") ##borrar tras pruebas for (diaindex in fechasy) { print (paste ("Día índice",as.Date(diaindex,origin))) fechafinventana =(as.Date(diaindex, origin) - days(distanciaventana)) fechainicioventana =(as.Date(diaindex, origin) - days(ventanacasos +distanciaventana+1)) pacienteventana =subset(paciente,fecha < fechafinventana & fecha > fechainicioventana) pacienteventana = distinct(pacienteventana,fecha,.keep_all = T) if (nrow (pacienteventana)toleranciaventana) { #con este if relleno con NA si no hay datos suficientes de la variable #MEDIA variablecalculada <- paste (variable, 'media', sep = '_') media_ <- NA nuevocaso <- c(nuevocaso, media_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MEDIA TOTAL variablecalculada <- paste (variable, 'mediatotal', sep = '_') mediatotal_ <- NA nuevocaso <- c(nuevocaso, mediatotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #resta media variablecalculada <- paste (variable, 'restamedia', sep = '_') restamedia_ <- NA nuevocaso <- c(nuevocaso, restamedia_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MAXIMO variablecalculada <- paste (variable, 'max', sep = '_') max_ <- NA nuevocaso <- c(nuevocaso, max_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MAXIMO TOTAL variablecalculada <- paste (variable, 'maxtotal', sep = '_') maxtotal_ <- NA 21 nuevocaso <- c(nuevocaso, maxtotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #resta max variablecalculada <- paste (variable, 'restamax', sep = '_') restamax_ <- NA nuevocaso <- c(nuevocaso, restamax_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MINIMO variablecalculada <- paste (variable, 'min', sep = '_') min_ <- NA nuevocaso <- c(nuevocaso, min_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MINIMO TOTAL variablecalculada <- paste (variable, 'mintotal', sep = '_') mintotal_ <- NA nuevocaso <- c(nuevocaso, mintotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #resta min variablecalculada <- paste (variable, 'restamin', sep = '_') restamin_ <- NA nuevocaso <- c(nuevocaso, restamin_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #VARIANZA variablecalculada <- paste (variable, 'var', sep = '_') var_ <- NA nuevocaso <- c(nuevocaso, var_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #VARIANZA TOTAL variablecalculada <- paste (variable, 'vartotal', sep = '_') vartotal_ <- NA nuevocaso <- c(nuevocaso, vartotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #resta var variablecalculada <- paste (variable, 'restavar', sep = '_') 22 restavar_ <- NA nuevocaso <- c(nuevocaso, restavar_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #DESVIACION TIPICA variablecalculada <- paste (variable, 'sd', sep = '_') sd_ <- NA nuevocaso <- c(nuevocaso, sd_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #DESVIACION TIPICA TOTAL variablecalculada <- paste (variable, 'sdtotal', sep = '_') sdtotal_ <- NA nuevocaso <- c(nuevocaso, sdtotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #restasd variablecalculada <- paste (variable, 'restasd', sep = '_') restasd_ <- NA nuevocaso <- c(nuevocaso, restasd_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MEDIANA variablecalculada <- paste (variable, 'mediana', sep = '_') mediana_ <- NA nuevocaso <- c(nuevocaso, mediana_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MEDIANA TOTAL variablecalculada <- paste (variable, 'medianatotal', sep = '_') medianatotal_ <- NA nuevocaso <- c(nuevocaso, medianatotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #resta mediana variablecalculada <- paste (variable, 'restamediana', sep = '_') restamediana_ <- NA nuevocaso <- c(nuevocaso, restamediana_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada 23 #PENDIENTE DE LA RECTA variablecalculada <- paste (variable, 'pendiente', sep = '_') pendiente_ <- NA nuevocaso <- c(nuevocaso, pendiente_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada } else { print (paste ("Genero variables")) #MEDIA variablecalculada <- paste (variable, 'media', sep = '_') media_ <- mean (solovarventana [, 1],na.rm = T) nuevocaso <- c(nuevocaso, media_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MEDIA TOTAL variablecalculada <- paste (variable, 'mediatotal', sep = '_') mediatotal_ <- mean (solovartodo, na.rm = T) nuevocaso <- c(nuevocaso, mediatotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #resta media variablecalculada <- paste (variable, 'restamedia', sep = '_') restamedia_ <- (mediatotal_ - media_) nuevocaso <- c(nuevocaso, restamedia_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MAXIMO variablecalculada <- paste (variable, 'max', sep = '_') max_ <- max (solovarventana [, 1],na.rm = T) nuevocaso <- c(nuevocaso, max_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MAXIMO TOTAL variablecalculada <- paste (variable, 'maxtotal', sep = '_') maxtotal_ <- max (solovartodo,na.rm = T) nuevocaso <- c(nuevocaso, maxtotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada 24 #resta max variablecalculada <- paste (variable, 'restamax', sep = '_') restamax_ <- (maxtotal_ - max_) nuevocaso <- c(nuevocaso, restamax_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MINIMO variablecalculada <- paste (variable, 'min', sep = '_') min_ <- min (solovarventana [, 1],na.rm = T) nuevocaso <- c(nuevocaso, min_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MINIMO TOTAL variablecalculada <- paste (variable, 'mintotal', sep = '_') mintotal_ <- min (solovartodo,na.rm = T) nuevocaso <- c(nuevocaso, mintotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #resta min variablecalculada <- paste (variable, 'restamin', sep = '_') restamin_ <- (mintotal_ - min_) nuevocaso <- c(nuevocaso, restamin_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #VARIANZA variablecalculada <- paste (variable, 'var', sep = '_') var_ <- var (solovarventana [, 1],na.rm = T) nuevocaso <- c(nuevocaso, var_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #VARIANZA TOTAL variablecalculada <- paste (variable, 'vartotal', sep = '_') vartotal_ <- var (solovartodo,na.rm = T) nuevocaso <- c(nuevocaso, vartotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #resta var variablecalculada <- paste (variable, 'restavar', sep = '_') restavar_ <- vartotal_ - var_ 25 nuevocaso <- c(nuevocaso, restavar_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #DESVIACION TIPICA variablecalculada <- paste (variable, 'sd', sep = '_') sd_ <- sd (solovarventana [, 1],na.rm = T) nuevocaso <- c(nuevocaso, sd_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #DESVIACION TIPICA TOTAL variablecalculada <- paste (variable, 'sdtotal', sep = '_') sdtotal_ <- sd (solovartodo,na.rm = T) nuevocaso <- c(nuevocaso, sdtotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #restasd variablecalculada <- paste (variable, 'restasd', sep = '_') restasd_ <- sdtotal_ - sd_ nuevocaso <- c(nuevocaso, restasd_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MEDIANA variablecalculada <- paste (variable, 'mediana', sep = '_') mediana_ <- median (solovarventana [, 1],na.rm = T) nuevocaso <- c(nuevocaso, mediana_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #MEDIANA TOTAL variablecalculada <- paste (variable, 'medianatotal', sep = '_') medianatotal_ <- median (solovartodo,na.rm = T) nuevocaso <- c(nuevocaso, medianatotal_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada #resta mediana variablecalculada <- paste (variable, 'restamediana', sep = '_') restamediana_ <- medianatotal_ - mediana_ nuevocaso <- c(nuevocaso, restamediana_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada 26 #PENDIENTE DE LA RECTA #plot (solovarventana$dias, solovarventana [,1]) variablecalculada <- paste (variable, 'pendiente', sep = '_') modelo <- lm(data = solovarventana , formula = dias ~ as.numeric(solovarventana [, 1])) pendiente_ <- modelo$coefficients [2] # si es NA, poner que es cero... if (is.na(pendiente_)) { pendiente_ = 0 } nuevocaso <- c(nuevocaso, pendiente_) names (nuevocaso)[length (nuevocaso)] <- variablecalculada } } #AÑADO LA LISTA AL DATAFRAME casospred #### casospred <- rbind(casospred, nuevocaso) } } casospred[-1, ] -> casospred #arreglo el dataframe final casospred$fecha <- as.Date(casospred$fecha, origin) #añado T F si young es igualo mayor a umbral casospred <- mutate (casospred, young > umbralyoung) todoscasos <- rbind (todoscasos, casospred) } names (todoscasos)[length (todoscasos)] <- c('youngumbral') todoscasos$young <- as.numeric(todoscasos$young) todoscasos = filter (todoscasos, !is.na(ansiedad_media)) 27 paso_algoritmos repeticiones = 30 #numero de veces que repito con mismos parámetros superrepeticiones = 30 #numero de veces que cambio parámetros datos = todoscasos ventana= ventanacasos #genero e inicializo listafin y listaresultados ##### listafin = data.frame (grupo = 'xxxx', modelo = "A", especificidad = 0, sensibilidad =0, auc = 0, youngumbral=0, ventanadatos=0, ventanalag= 0, porcent=0, NNalg = "backprop", NNlr=0, NNocultas = 'aaa', C5prueba = 0, C5costes = 0, KNNl=0, KNNvecinos = 0, Blaplace= 0, RLumbral =0.5, svmkernel=0, svmcostes=0) listafin = listafin [0,] listaresultados = listafin ##### Selecciono y preparo datos ##### datos = todoscasos #filtro las variables que he indicado en parámetros datos = dplyr::select (todoscasos, variables_filtro) listavariables <- names (datos) for (a in listavariables) { datos [,a] <- (na_interpolation(datos[,a])) 28 } datos$youngumbral<-as.factor(datos$youngumbral) datos$id<-as.factor(datos$id) especificidad = 0 sensibilidad = 0 dplyr::rename (datos, umbral = youngumbral) -> datos for (u in (1:superrepeticiones)) { print (paste ("Calculando superrepetición",u)) # Parámetros #### lr = sample ((seq(0.00001,0.005, by=0.0001)),1 )#NN ocultas = c(12,sample (c(9,6,3),1)) #NN sm =1e6 #NN algoritmo = "backprop" #NN pruebasc5 = sample (1:5,1) #C5 costesc5 = sample (seq(0.5,5,0.2),1) #C5 knn_l=sample (-0:1,1)#KNN vecinos=sample (2:12,1) #KNN suele ser raiz2 de num observ laplacebayes = (sample(0:10,1)) #NaiveBayes umbralreg = sample (seq (0.1,0.9,0.05),1) #regresión log umbralregresion = umbralreg kernelsvm= sample (c("linear", "polynomial", "radial", "sigmoid"),1)#svm costesvm = sample(1:4,1) #svm for (n in (1:repeticiones)) { print (paste("Superrepetición",u,"Repetición",n)) #Aleatorizo los datos #### tamano.total = nrow(datos) tamano.entreno = round(tamano.total*porcentaje) datos.indices = sample(1:tamano.total , size=tamano.entreno) # Selección de submuestras aleatorias para modelos datos.entreno <- datos[datos.indices,] datos.test <- datos[-datos.indices,] datos.entreno.label <- datos.entreno$umbral datos.test.label <- datos.test$umbral ### Modelos ###### #Modelo ZeroRule #### 29 nombreprueba = paste('zerorule') P1 = nrow (dplyr::filter (datos, umbral== TRUE)) P2 = nrow (dplyr::filter (datos, umbral== FALSE)) PP = P1/(P1+P2) longitud = length (datos.test.label) borrar1 = NULL i= c(0:1) PP =0 borrar1= sample (i,size = longitud, replace = T, prob = (c(1-PP,PP))) borrar2= borrar1>0 real <- data.frame (datos.test.label)[,1] prediccion = borrar2 ######### Evaluar modelo if (length (unique (real))==2){ nombreprueba = "zerorule" prueba = CrossTable(real, prediccion) especificidad = round(prueba$prop.tbl[1],2) sensibilidad = 0 print (paste(nombreprueba, ": especificidad",especificidad," sensibilidad:",sensibilidad)) auc = NULL roc.curve (response = real,predicted = prediccion) -> curvaroc auc = curvaroc$auc} # Añado a lista if (length (unique (real))==2){ listaresultados = dplyr::add_row (.data = listaresultados, grupo =grupo, modelo= nombreprueba, especificidad = especificidad, sensibilidad = sensibilidad, auc = auc, youngumbral=umbralyoung, ventanadatos=ventana, ventanalag= distanciaventana, porcent=porcentaje, NNalg = algoritmo, NNlr=lr, NNocultas = paste( unlist(ocultas), collapse=' '), C5prueba= pruebasc5, C5costes = costesc5, 30 KNNl=knn_l, KNNvecinos = vecinos, Blaplace= laplacebayes, RLumbral =umbralregresion, svmkernel=kernelsvm, svmcostes=costesvm )} real = NULL prediccion = NULL #Modelo Aleatorio #### nombreprueba = paste('aleatorio') P1 = nrow (dplyr::filter (datos, umbral== TRUE)) P2 = nrow (dplyr::filter (datos, umbral== FALSE)) PP = P1/(P1+P2) longitud = length (datos.test.label) borrar1 = NULL i= c(0:1) borrar1= sample (i,size = longitud, replace = T, prob = (c(1-PP,PP))) borrar2= borrar1>0 real <- data.frame (datos.test.label)[,1] prediccion = borrar2 ######### Evaluar modelo if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ nombreprueba = "aleatorio" prueba = CrossTable(real, prediccion) especificidad = round(prueba$t[2,2]/(prueba$t[2,2]+ prueba$t[2,1]),2) sensibilidad = round(prueba$t[2,2]/(prueba$t[2,2]+prueba$t[1,2]),2) print (paste(nombreprueba, ": especificidad",especificidad," sensibilidad:",sensibilidad)) roc.curve (response = real,predicted = prediccion) } # Añado a lista if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ listaresultados = dplyr::add_row (.data = listaresultados, grupo =grupo, modelo= nombreprueba, especificidad = especificidad, 31 sensibilidad = sensibilidad, auc = auc, youngumbral=umbralyoung, ventanadatos=ventana, ventanalag= distanciaventana, porcent=porcentaje, NNalg = algoritmo, NNlr=lr, NNocultas = paste( unlist(ocultas), collapse=' '), C5prueba= pruebasc5, C5costes = costesc5, KNNl=knn_l, KNNvecinos = vecinos, Blaplace= laplacebayes, RLumbral =umbralregresion, svmkernel=kernelsvm, svmcostes=costesvm ) } real = NULL prediccion = NULL #Modelo retropropagación #### nombreprueba = paste('Retropropagación') variablesnn <- names (datos.entreno [1:length(datos.entreno)]) variablesnn = variablesnn [3:length (variablesnn)]#quito umbral e id formulann <- as.formula(paste("umbral == TRUE ~", paste(variablesnn , collapse = " + "))) nn <- tryCatch(neuralnet(formulann, algorithm = algoritmo, data = datos.entreno, hidden = ocultas, # c(12,2) learningrate = 0.001, #lr threshold= 0.008), error=function(a) { nombreprueba= "ERROR NN" return (neuralnet(formulann, 32 algorithm = algoritmo, data = datos.entreno, hidden = ocultas, # c(12,2) learningrate = 0.00001, #lr threshold= 1))}, warning=function(b) { nombreprueba= "ERROR2 NN" return (neuralnet(formulann, algorithm = algoritmo, data = datos.entreno, hidden = ocultas, # c(12,2) learningrate = 0.00001, threshold= 1))} ) predictnn <- predict (nn, datos.test ) prediccion<- as.vector(predictnn [,1]>0.5) #genero datos.test.predichos con resultados con datos.test.predichos = datos.test datos.test.predichos$prediccion = prediccion datos.test.predichos = mutate (datos.test.predichos, acierto = (prediccion==umbral)) datos.test.predichos = select (datos.test.predichos, id,umbral, prediccion, acierto) # Evaluación real <- as.vector(datos.test.label) if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ prueba = CrossTable(x = real, y = prediccion) especificidad = round(prueba$t[2,2]/(prueba$t[2,2]+ prueba$t[2,1]),2) sensibilidad = round(prueba$t[2,2]/(prueba$t[2,2]+prueba$t[1,2]),2) print (paste(nombreprueba, ": especificidad",especificidad," sensibilidad:",sensibilidad)) auc = NULL roc.curve (response = real,predicted = prediccion) -> curvaroc auc = curvaroc$auc } #añado a lista de resultados if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ listaresultados = dplyr::add_row (.data = listaresultados, 33 grupo =grupo, modelo= nombreprueba, especificidad = especificidad, sensibilidad = sensibilidad, auc = auc, youngumbral=umbralyoung, ventanadatos=ventana, ventanalag= distanciaventana, porcent=porcentaje, NNalg = algoritmo, NNlr=lr, NNocultas = paste( unlist(ocultas), collapse=' '), C5prueba= pruebasc5, C5costes = costesc5, KNNl=knn_l, KNNvecinos = vecinos, Blaplace= laplacebayes, RLumbral =umbralregresion, svmkernel=kernelsvm, svmcostes=costesvm ) } real = NULL prediccion = NULL #Modelo C5 ##### datos.test2 = datos.test [3:ncol(datos.test)] datos.entreno2=datos.entreno [3:ncol(datos.test)] real <- datos.test.label testc5 <- C5.0( x = datos.entreno2, y = datos.entreno.label, trials = pruebasc5, costs = NULL) prediccion <- predict(testc5, datos.test2, type = "class") ######### Evaluar modelo if (length (unique (real))==2 & length (unique (prediccion))==2){ real <- datos.test.label prueba = CrossTable(real, prediccion) especificidad = round(prueba$t[2,2]/(prueba$t[2,2]+ prueba$t[2,1]),2) 34 sensibilidad = round(prueba$t[2,2]/(prueba$t[2,2]+prueba$t[1,2]),2) print (paste(nombreprueba, ": especificidad",especificidad," sensibilidad:",sensibilidad)) auc = NULL roc.curve (response = real,predicted = prediccion) -> curvaroc auc = curvaroc$auc } # Añado a lista if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ listaresultados = add_row (listaresultados, grupo =grupo, modelo= nombreprueba, especificidad = especificidad, sensibilidad = sensibilidad, auc = auc,youngumbral=umbralyoung, ventanadatos=ventana, ventanalag= distanciaventana,porcent=porcentaje,NNalg = algoritmo,NNlr=lr,NNocultas = paste( unlist(ocultas), collapse=' '),C5prueba= pruebasc5, C5costes = costesc5,KNNl=knn_l,KNNvecinos = vecinos,Blaplace= laplacebayes,RLumbral =umbralregresion,svmkernel=kernelsvm,svmcostes=costesvm ) } real = NULL prediccion = NULL #Modelo KNN####### nombreprueba = paste('KNN' ) datos.entreno2 = datos.entreno [,3:length (datos.entreno)] datos.test2 = datos.test [,3:length (datos.entreno)] real <- datos.test.label # Ajustar modelo #podriamos ponerle costes altos a pasarnos una mania testknn <- knn (train = datos.entreno2, test = datos.test2, cl = datos.entreno.label, k = vecinos, l=knn_l) prediccion = testknn # Evaluar modelo if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ real <- datos.test.label prueba = CrossTable(real, prediccion) especificidad = round(prueba$t[2,2]/(prueba$t[2,2]+ prueba$t[2,1]),2) sensibilidad = round(prueba$t[2,2]/(prueba$t[2,2]+prueba$t[1,2]),2) 35 print (paste(nombreprueba, ": especificidad",especificidad," sensibilidad:",sensibilidad)) } if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ auc = NULL roc.curve (response = real,predicted = prediccion) -> curvaroc auc = curvaroc$auc } #añado a lista if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ listaresultados = add_row (listaresultados, grupo =grupo, modelo= nombreprueba, especificidad = especificidad, sensibilidad = sensibilidad, auc = auc,youngumbral=umbralyoung, ventanadatos=ventana, ventanalag= distanciaventana,porcent=porcentaje,NNalg = algoritmo,NNlr=lr,NNocultas = paste( unlist(ocultas), collapse=' '),C5prueba= pruebasc5, C5costes = costesc5,KNNl=knn_l,KNNvecinos = vecinos,Blaplace= laplacebayes,RLumbral =umbralregresion,svmkernel=kernelsvm,svmcostes=costesvm ) } real = NULL prediccion = NULL #Modelo Näive Bayes ######## datos.entreno2 = datos.entreno [,3:length (datos.entreno)] datos.test2 = datos.test [,3:length (datos.entreno)] nombreprueba = paste('Naïve Bayes') modelobayes <- naiveBayes (x = datos.entreno2, y = datos.entreno.label, laplace = laplacebayes) predictbayes <- predict (modelobayes, datos.test) prediccion = predictbayes real <- datos.test.label if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ prueba = CrossTable(real, prediccion) especificidad = round(prueba$t[2,2]/(prueba$t[2,2]+ prueba$t[2,1]),2) sensibilidad = round(prueba$t[2,2]/(prueba$t[2,2]+prueba$t[1,2]),2) print (paste(nombreprueba, ": especificidad",especificidad," sensibilidad:",sensibilidad)) auc = NULL roc.curve (response = real,predicted = prediccion) -> curvaroc 36 auc = curvaroc$auc } #añado a lista if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ listaresultados = add_row (listaresultados, grupo =grupo, modelo= nombreprueba, especificidad = especificidad, sensibilidad = sensibilidad, auc = auc,youngumbral=umbralyoung, ventanadatos=ventana, ventanalag= distanciaventana,porcent=porcentaje,NNalg = algoritmo,NNlr=lr,NNocultas = paste( unlist(ocultas), collapse=' '),C5prueba= pruebasc5, C5costes = costesc5,KNNl=knn_l,KNNvecinos = vecinos,Blaplace= laplacebayes,RLumbral =umbralregresion,svmkernel=kernelsvm,svmcostes=costesvm ) } real = NULL prediccion = NULL #Modelo Regresión Logística ######## umbralregresion = umbralreg nombreprueba = paste('RegLog') modelorlog <- glm (formulann, data = datos.entreno) prediccionlog = predict (modelorlog, newdata = datos.test, type="response") >umbralregresion prediccion = prediccionlog real <- datos.test.label if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ prueba = CrossTable(real, prediccion) especificidad = round(prueba$t[2,2]/(prueba$t[2,2]+ prueba$t[2,1]),2) sensibilidad = round(prueba$t[2,2]/(prueba$t[2,2]+prueba$t[1,2]),2) print (paste(nombreprueba, ": especificidad",especificidad," sensibilidad:",sensibilidad)) auc = NULL roc.curve (response = real,predicted = prediccion) -> curvaroc auc = curvaroc$auc } #añado a lista if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ listaresultados = add_row (listaresultados, grupo =grupo, modelo= nombreprueba, especificidad = especificidad, sensibilidad = sensibilidad, auc = auc,youngumbral=umbralyoung, ventanadatos=ventana, ventanalag= distanciaventana,porcent=porcentaje,NNalg = 37 algoritmo,NNlr=lr,NNocultas = paste( unlist(ocultas), collapse=' '),C5prueba= pruebasc5, C5costes = costesc5,KNNl=knn_l,KNNvecinos = vecinos,Blaplace= laplacebayes,RLumbral =umbralregresion,svmkernel=kernelsvm,svmcostes=costesvm )} real = NULL prediccion = NULL #Modelo Rpart ###### nombreprueba = paste('Rpart') arbol<- rpart(formula = formulann, data = datos.entreno, control=rpart.control(minsplit=1, minbucket=1, cp=0.001), method = "class") prediccion <- predict(arbol, newdata = datos.test, type = "class") real <- datos.test.label if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ prueba = CrossTable(real, prediccion) especificidad = round(prueba$t[2,2]/(prueba$t[2,2]+ prueba$t[2,1]),2) sensibilidad = round(prueba$t[2,2]/(prueba$t[2,2]+prueba$t[1,2]),2) print (paste(nombreprueba, ": especificidad",especificidad," sensibilidad:",sensibilidad)) auc = NULL roc.curve (response = real,predicted = prediccion) -> curvaroc auc = curvaroc$auc } #añado a lista if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ listaresultados = add_row (listaresultados, grupo =grupo, modelo= nombreprueba, especificidad = especificidad, sensibilidad = sensibilidad, auc = auc,youngumbral=umbralyoung, ventanadatos=ventana, ventanalag= distanciaventana,porcent=porcentaje,NNalg = algoritmo,NNlr=lr,NNocultas = paste( unlist(ocultas), collapse=' '),C5prueba= pruebasc5, C5costes = costesc5,KNNl=knn_l,KNNvecinos = vecinos,Blaplace= laplacebayes,RLumbral =umbralregresion,svmkernel=kernelsvm,svmcostes=costesvm ) } real = NULL prediccion = NULL 38 #Modelo SVM ######## levels(datos.entreno$umbral) ## para pesos en svm pesos= 100/ table (datos.entreno$umbral)## para pesos en svm nombreprueba = paste('SVM') modelosvm<- svm(formula = formulann, data = datos.entreno, type = "C", kernel = kernelsvm, cost =costesvm,class.weights = pesos) prediccion <- predict(modelosvm, newdata = datos.test) #el mejor lineal 6 real <- datos.test.label if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ prueba = CrossTable(real, prediccion) especificidad = round(prueba$t[2,2]/(prueba$t[2,2]+ prueba$t[2,1]),2) sensibilidad = round(prueba$t[2,2]/(prueba$t[2,2]+prueba$t[1,2]),2) print (paste(nombreprueba, ": especificidad",especificidad," sensibilidad:",sensibilidad)) #añado a lista if (length (unique (real))==2&length (unique (prediccion))==2&length(prediccion)>1){ listaresultados = add_row (listaresultados, grupo =grupo, modelo= nombreprueba, especificidad = especificidad, sensibilidad = sensibilidad, auc = auc,youngumbral=umbralyoung, ventanadatos=ventana, ventanalag= distanciaventana,porcent=porcentaje,NNalg = algoritmo,NNlr=lr,NNocultas = paste( unlist(ocultas), collapse=' '),C5prueba= pruebasc5, C5costes = costesc5,KNNl=knn_l,KNNvecinos = vecinos,Blaplace= laplacebayes,RLumbral =umbralregresion,svmkernel=kernelsvm,svmcostes=costesvm ) } real = NULL prediccion = NULL } 39 } } #genero listafin listafin = listafin [0,] for (i in (unique(listaresultados$modelo))) { pruebas = filter (listaresultados, modelo == i) mspruebas = mean (pruebas$especificidad, na.rm = T) mepruebas = mean (pruebas$sensibilidad,na.rm = T) mediaauc = mean (pruebas$auc,na.rm = T) listafin = add_row (listafin, grupo = grupo, modelo = i, especificidad=mspruebas, sensibilidad= mepruebas, auc = mediaauc, youngumbral=umbralyoung, ventanadatos=ventana, ventanalag= distanciaventana, porcent=porcentaje, NNalg = algoritmo, NNlr=lr, NNocultas = paste( unlist(ocultas), collapse=' '), C5prueba = pruebasc5, C5costes = costesc5, KNNl=knn_l, KNNvecinos = vecinos, Blaplace= laplacebayes, RLumbral =umbralregresion, svmkernel=kernelsvm, svmcostes=costesvm) } print (listafin[1:3]) write.csv(x = listaresultados,file = paste('graficos// lista_base',grupo,'.csv')) beepr::beep ("coin") 40 write.csv(x = listafin,file = paste('graficos//lista_sum',grupo,'.csv')) beepr::beep (sound = "mario") ######### GRAFICOS RESULTADOS ####### ggplot(data = listaresultados,aes (sensibilidad, especificidad)) + geom_jitter() + facet_wrap(vars(modelo)) ggsave(filename = paste("graficos/a1_jitter",grupo,".pdf"),width = 10,height = 8) ggplot(data = listafin,aes (sensibilidad, especificidad)) + geom_point () + facet_wrap(vars(modelo)) ggsave(filename = paste("graficos/a2_point",grupo,".pdf"),width = 10,height = 8) ggplot(data = listaresultados,aes (sensibilidad,)) + geom_histogram() + facet_wrap(vars(modelo)) ggsave(filename = paste("graficos/a3",grupo,".pdf"),width = 10,height = 8) ggplot(data = listaresultados,aes (especificidad,)) + geom_histogram() + facet_wrap(vars(modelo)) ggsave(filename = paste("graficos/a4_jitter",grupo,".pdf"),width = 10,height = 8) ggplot(data = listaresultados,aes (auc,)) + geom_histogram() + facet_wrap(vars(modelo)) ggsave(filename = paste("graficos/a5",grupo,".pdf"),width = 10,height = 8) #Calculo Shannon entropy entropia <- function(target) { freq <- table(target)/length(target) # vectorial vec <- as.data.frame(freq)[,2] #evitar NaA por log2... vec<-vec[vec>0] #y por fin calculo entropía... -sum(vec * log2(vec)) } # Estudio general 41 #hago que las medias no sean negativas nunca #genero dispersion dispersion = data.frame(variable = "aasdas", sd=0, shannon = 0) dispersion$variable=as.character(dispersion$variable) dispersion = dispersion[0,] a= 7 for (a in 2:19) { variable = as.character(names (diario[a])) if (a!=5) { seleccion = rescale (diario[,a]) #para no tener medias negativas que me fastidivan el cv if (variable=='tabaco') { #para quitar no fumadores seleccion = seleccion [seleccion>0] } e_sd= sd (seleccion,na.rm = T) e_entropia= entropia (seleccion) dispersion [a,]= c(variable, e_sd,e_entropia)} } dispersion= na.omit(dispersion) for (a in 2:3) { dispersion[,a]=as.numeric(dispersion[,a]) } # Estudio por pacientes #genero dispersionP dispersionp = data.frame(variable = "aasdas", paciente= "asd", sd=0, shannon = 0) dispersionp$variable=as.character(dispersionp$variable) dispersionp$paciente=as.character(dispersionp$paciente) dispersionp = dispersionp[0,] 42 pacientes_d = unique (diario$id) b="RORU" for (b in pacientes_d) { diario_paciente = dplyr::filter (diario,id==b) nombre = as.character(b) a=2 for (a in 2:19) { variable = as.character(names (diario_paciente[a])) if (a!=5) { seleccion = rescale (diario_paciente[,a]) #para no tener medias negativas que me fastidivan el cv } if (variable=='tabaco') { #para quitar no fumadores seleccion = seleccion [seleccion>0]} e_sd= sd (seleccion,na.rm = T) e_entropia= entropia (seleccion) print ( c(nombre,variable)) dispersionp= add_row (dispersionp, variable = variable, paciente = nombre, sd= e_sd, shannon= e_entropia) } } for (a in 3:4) { dispersionp[,a]=as.numeric(dispersionp[,a]) } # agregados variables_a = unique (dispersionp$variable) a= "animo" dispersion_ag= data.frame (variable = "aaa",mediasd = 0, sdsd = 0,mediash=0,sdsh=0) for (a in variables_a) { solov= dplyr::filter (dispersionp, variable== a) 43 solov=na.omit(solov) mediasd= mean (solov$sd) sdsd= sd (solov$sd) mediash= mean (solov$sh) sdsh= sd (solov$sh) dispersion_ag=add_row(dispersion_ag,variable = a,mediasd = mediasd, sdsd = sdsd,mediash=mediash,sdsh=sdsh) } 44 Portada Agradecimientos Índice Resumen Abstract 1. Introducción 2. Fundamentos 3. Objetivos e hipótesis 4. Estudio A: evaluación de las variables predictoras de la manía 5. Estudio B: análisis exploratorio de diferentes estrategias predictivas 6. Discusión 7. Conclusiones y trabajo futuro Bibliografía Anexo I: Unidad de tratamiento del trastorno bipolar Anexo II: Variables del formulario del paciente Anexo III: Código