Trabajo de investigación realizado por: Alejandro Salazar Couso como proyecto de fin de máster para el: Máster Oficial en Estadística Aplicada de la: Universidad de Granada 2 Índice. Capítulo 1: Introducción ........................................................................................... 6 Capítulo 2: Metodología........................................................................................... 11 2.1 Los modelos de respuesta discreta .............................................................. 11 2.1.1 El modelo lineal ............................................................................... 12 2.1.1 El modelo logit ................................................................................. 13 2.1.1 El modelo probit ............................................................................... 14 2.2: Modelo de regresión logística binaria .......................................................... 15 2.2.1: Formulación e interpretación ............................................................... 15 2.2.1.1: Formulación del modelo .............................................................. 15 2.2.1.2: Interpretación ............................................................................... 17 2.2.2 Estimación ............................................................................................ 18 2.2.3 Contrastes sobre los parámetros.......................................................... 21 2.2.3.1: Contrastes ................................................................................... 21 2.2.3.2: Intervalos de confianza ................................................................ 22 2.2.4: Bondad de ajuste ................................................................................. 23 2.2.5: Selección de variables ......................................................................... 26 2.2.6: Validación y diagnosis ......................................................................... 28 Capítulo 3: Aplicación en R...................................................................................... 31 3.1 Primeros pasos con R .................................................................................. 32 3.2 Estadística descriptiva básica con R ............................................................ 37 3.2.1 Variables categóricas ............................................................................ 37 3.2.2 Variables cualitativas ordinales ............................................................. 41 3.2.3 Variables cuantitativas .......................................................................... 43 3 3.2.4 Variables de intervalo ........................................................................... 44 3.2.5 Variables de razón ................................................................................ 45 3.3 Análisis exploratorio de datos multidimensionales ....................................... 50 3.4 Ajuste de un modelo logístico binario con R ................................................. 52 3.4.1: Formulación ......................................................................................... 53 3.4.2: Parámetros .......................................................................................... 56 3.4.3: Bondad de ajuste ................................................................................. 58 3.4.4: Selección de variables ......................................................................... 60 3.4.5: Validación y diagnosis ......................................................................... 61 Capítulo 4: Aplicación a datos reales....................................................................... 64 4.1: Introducción y antecedentes del problema .................................................. 64 4.2: Material y método ........................................................................................ 65 4.3 Resultados .................................................................................................... 67 4.3.1: Análisis descriptivo .............................................................................. 67 4.3.2: Prevalencia de dolor crónico diagnosticado ........................................ 76 4.3.3: Factores asociados a la presencia de dolor. Modelo logit ................... 77 4.3.3.1: Selección de variables ................................................................. 77 4.3.3.2: Parámetros del modelo................................................................ 82 4.3.3.3: Bondad de ajuste ......................................................................... 85 4.3.3.4: Validación y diagnosis ................................................................. 86 4.4: Conclusiones ............................................................................................... 87 Anexo: Sentencias de R .......................................................................................... 89 Bibliografía ............................................................................................................... 97 4 5 Capítulo 1 Introducción En el presente trabajo se estudiarán modelos de respuesta discreta, su formulación, su ajuste y evaluación con R y se aplicarán a un conjunto de datos reales. En particular, nos centraremos en los modelos de regresión logística binaria. Los modelos de respuesta discreta son la herramienta estadística apropiada para modelizar el comportamiento de una variable dependiente (respuesta) de naturaleza discreta a partir de un conjunto de variables independientes (predictoras), que pueden ser tanto discretas como continuas. Estos modelos son un caso particular de los “Modelos Lineales Generalizados” introducidos por Nelder y Wedderburn en 1972. Para un mayor conocimiento de éstos, pueden consultarse obras como las de McCullagh y Nelder1 o Agresti2. Existen distintos tipos de modelos de respuesta discreta que dependen, entre otros aspectos, del tipo de respuesta. En particular, si la variable dependiente es dicotómica, estamos hablando de “modelos de respuesta binaria”, mientras que si tiene más de dos categorías de respuesta, estamos hablando de “modelos de respuesta múltiple”. Más aún, si esas categorías tienen un orden natural, entonces estamos hablando de “modelos de respuesta ordenada”. Según la función utilizada para la estimación de la probabilidad, encontramos el “modelo lineal”, el “modelo Logit” y el “modelo Probit”. Cuando las variables explicativas que se utilizan para estimar las probabilidades asociadas a cada una de las posibles alternativas que presenta la variable dependiente se refieren a atributos de las distintas alternativas, y no a características específicas de los individuos, entonces hablamos de un “modelo condicional”. En el ejemplo que se estudiará en el último capítulo de esta memoria, la variable respuesta es dicotómica, por lo que debería ajustarse un modelo de respuesta binaria. 6 Existen diversas alternativas para la aplicación de modelos de respuesta discreta, pero en el presente trabajo usaremos la alternativa ofrecida por R. El programa R es un entorno para la estadística computacional y gráficos. Funciona en una amplia variedad de plataformas UNIX, Windows y MacOS. Es un lenguaje de órdenes (funciona con comandos) basado en los lenguajes previos S y Scheme. Ofrece un amplio abanico de posibilidades (modelos lineales y no lineales, test estadísticos, análisis de series temporales, clasificación, análisis clúster…) así como técnicas gráficas, y puede ser ampliado casi sin límites. El propósito, por tanto es de estadística general, pero al ser software libre permite crear paquetes más específicos, otorgándole mayor versatilidad. Sus gráficos son de reconocida calidad e incluye simbología matemática. Tal y como se afirma en la página oficial3 del proyecto R, se trata de un entorno en el que se implementan técnicas estadísticas, pero que ofrece muchas más opciones. En el presente trabajo se hará uso de la versión “R 2.13.0” con “R-Commander,” que es una Interfaz Gráfica de Usuario que permite hacer uso del entorno estadístico R de una forma mucho más intuitiva, sin necesidad de conocer completamente el lenguaje de comandos propio de este entorno. R-Commander dota a R de una interfaz mucho más amigable de cara al usuario, tratando de corregir uno de los aspectos más criticados del paquete estadístico. Como se ha indicado previamente en la presente memoria, se mostrará una aplicación con datos reales de los modelos de respuesta discreta. Se describe a continuación la información disponible: La base de datos escogida es la correspondiente a la “Encuesta de Discapacidad, Autonomía personal y situaciones de Dependencia” (EDAD-2008)4 llevada a cabo por el Instituto Nacional de Estadística (INE) entre noviembre de 2007 y febrero de 2008. En la misma se recogen datos de diferente índole (sociodemográficos y de carácter sanitario principalmente) de individuos discapacitados en España. Los objetivos de esta encuesta son ofrecer información sobre los fenómenos de la discapacidad, la dependencia, el envejecimiento y el estado de salud de la población. Además de en 2008, el INE ha realizado esta encuesta en otras dos ocasiones: 1986 y 1999, y pone a disposición de todo el mundo los datos recogidos en 1999 y en 2008, debidamente anonimizados. Sin embargo, las versiones de algunas preguntas en ambos cuestionarios difieren en mayor o menor medida, lo que hace complicada la comparación entre ambos años, razón por la que se optó por un estudio de corte transversal con la versión del año 2008. 7 En cuanto a nuestro estudio, nos centraremos en aquellos individuos discapacitados que padezcan dolor crónico, ya que se trata de dos problemas de salud frecuentes (discapacidad y dolor) actualmente y que pueden estar ligados5-7. Se trata, por tanto, de un ejemplo relativo a la sanidad, con evidentes aplicaciones y utilidad real, que pone de manifiesto la importancia de los modelos de respuesta discreta, que trasciende lo puramente estadístico para meterse de lleno en otras áreas de la ciencia y el conocimiento humano. Son muchos los estudios epidemiológicos (como el de nuestro ejemplo) que hacen uso de estas herramientas estadísticas. Para saber más sobre el papel que la estadística juega en los estudios epidemiológicos, puede consultarse el libro de Selvin, “Statistical Analysis of Epidemiological Data”8. En vista de lo expuesto, los objetivos de este trabajo son: 1. Profundizar en los modelos de respuesta discreta (y en particular en el modelo de regresión logística binaria) desde un punto de vista teórico, mostrando el desarrollo matemático que subyace. 2. Explicar el funcionamiento del paquete estadístico R, particularmente el de aquellas funciones que serán necesarias para la realización de este trabajo, y mostrar las técnicas disponibles para el ajuste y evaluación de un modelo de respuesta discreta con R. 3. Aplicar la metodología expuesta al conjunto de datos reales especificado anteriormente. Con esta aplicación nuestros objetivos son, a su vez, conocer la prevalencia, características y factores asociados al dolor crónico en discapacitados, así como la comorbilidad dolor crónico-ansiedad y dolor crónicodepresión. Las conclusiones del estudio están encaminadas a mejorar el tratamiento del dolor en estos pacientes mediante la exploración sistemática de trastornos psiquiátricos asociados. 8 Para lograr nuestros objetivos, y al objeto de facilitar la lectura y comprensión del trabajo, se ha dividido el mismo en 4 capítulos, cada uno enfocado a un objetivo: El capitulo 1, “Introducción”, es el capítulo donde se introducen los conceptos, la metodología, los objetivos y la estructura del trabajo. Es una breve visión del mismo a modo de resumen, para tener una idea global de este trabajo. El capítulo 2, “Metodología”, es el capítulo que entra de lleno en la base teórica de los modelos de respuesta discreta. En él se presentan de forma genérica los modelos de respuesta discreta y, con rigor, la formulación, interpretación, ajuste, contraste de bondad de ajuste, validación y diagnosis de los modelos de regresión logística binaria. Este capítulo responde al primer objetivo planteado. El capítulo 3, “Aplicación en R”, ofrece una descripción detallada del software utilizado para el análisis estadístico propuesto. Para adaptarnos a cualquier nivel de conocimientos previos sobre R, el capítulo comienza con unos primeros pasos en R y R-Commander, desde su instalación hasta la creación e importación de bases de datos, incluyendo unas pinceladas sobre la creación y manejo de objetos en R. También se describen las técnicas para la realización de todos los análisis que se verán en el capítulo 4, desde los análisis descriptivos básicos, incluyendo figuras, pasando por análisis multidimensionales, hasta el propio ajuste de un modelo logístico binario. Este capítulo responde al segundo objetivo planteado. El capítulo 4, “Aplicación a datos reales”, se dedica al análisis de los resultados. En él se expone de manera detallada la base de datos reales seleccionada para ilustrar la metodología, se ofrece una visión global del problema de salud planteado en el ejemplo, se detalla el procedimiento seguido para los análisis descriptivos y el ajuste del modelo, se muestran y se explican los resultados obtenidos y se sacan conclusiones. Este capítulo responde al tercer y último objetivo planteado, incluidos los objetivos específicos marcados para el ejemplo concreto con datos reales. 9 10 Capítulo 2 Metodología En el presente capítulo se presentan de forma genérica los modelos de respuesta discreta y, con rigor, la formulación, interpretación, ajuste, contraste de bondad de ajuste, validación y diagnosis de los modelos de regresión logística binaria. 2.1: Los modelos de respuesta discreta. Como se ha avanzado en la introducción del trabajo, los modelos de respuesta discreta son la herramienta estadística apropiada para modelizar el comportamiento de una variable dependiente (respuesta) de naturaleza discreta a partir de un conjunto de variables independientes (predictoras), que pueden ser tanto discretas como continuas. Estos modelos son un caso particular de los “Modelos Lineales Generalizados” introducidos por Nelder y Wedderburn en 1972. Veremos en este capítulo distintos modelos de respuesta discreta, pero para un mayor conocimiento de éstos, remitimos nuevamente a los libros de McCullagh y Nelder1 y Agresti2. Recordando la clasificación que ya ha sido introducida en el capítulo 1, encontramos que los modelos de respuesta discreta pueden clasificarse en modelos de respuesta binaria y modelos de respuesta múltiple, según la variable dependiente tenga, respectivamente, 2 categorías o más de 2. Si existe un orden natural en las categorías, entonces es un modelo de respuesta ordenada. También se han presentado anteriormente los modelos condicionales. Finalmente, según la función utilizada para la estimación de la probabilidad, encontramos el “modelo lineal”, el “modelo Logit” y el “modelo Probit”. Como los modelos de respuesta múltiple (en los que la variable dependiente tiene J posibles respuestas (J>2)) no son el objeto de este trabajo, nos remitimos a los libros de Agresti, “Multivariate Analysis: Discrete Variables (Overview)”9 y ”Categorical 11 data analisys”2. Estos libros son una lectura recomendada tanto para modelos de respuesta múltiple como para modelos de respuesta discreta, en general. Los modelos de respuesta binaria tienen una variable dependiente dicotómica que llamaremos Y. Esta variable puede tomar dos valores, que podremos recodificar en 0 y 1. Generalmente se asocia el valor 0 a la “ausencia”, al “fracaso” o a una respuesta negativa en general, y el valor 1 a la “presencia”, el “éxito” o una respuesta afirmativa en general. Con la variable así codificada, se tiene que Y sigue una distribución de Bernouilli de parámetro p (0<p<1). Puesto que contamos con una serie de variables independientes “X” predictoras del comportamiento de Y, lo propio es considerar la distribución de Y en cada valor observado de X, “Y(x)”. Se tiene que es también una Bernouilli de esperanza p(x) y varianza p(x)[1-p(x)]. El objetivo final será la construcción de un modelo para Y(x) en función de los parámetros, x, y un error. Para satisfacer esta necesidad, disponemos de los modelos lineales, los modelos logit y probit, aunque los modelos lineales tienen ciertos problemas que veremos a continuación. 2.1.1: El modelo lineal Supongamos que tenemos R variables independientes con N observaciones en ,…, cada una. Sea el vector que contiene las observaciones de cada variable para el individuo i-ésimo. El modelo de probabilidad lineal, que deriva del ∑ modelo de regresión lineal , ( 1, … , ), ( 1, … , ) teniendo en cuenta que los errores son variables aleatorias independientes y de esperanza 0, es de la forma: | ∑ , ( 1, … , ), ( 1, … , ) Este modelo presenta diversos problemas, entre los que destaca la no normalidad, la no homocedasticidad (varianza de la respuesta no constante sobre los valores de x), la posibilidad de obtener valores de la probabilidad por debajo de 0 y por encima de 1, la subestimación del parámetro y, sobre todo, el hecho de que aumentos iguales en las variables explicativas originen aumentos iguales en la probabilidad de respuesta. Esta última situación no es en absoluto realista, ya que en general esta dependencia no será lineal. 12 En la imagen 2.1 se muestra la representación gráfica de un modelo lineal. Podemos observar algunos de los problemas explicados como el de los aumentos constantes y, de forma más evidente, la falta de acotación en el intervalo [0,1]. Imagen 2.1: Representación gráfica de un modelo lineal. Todos los problemas presentados hacen que estos modelos no sean tan utilizados y, en su lugar, la comunidad científica tienda a hacer uso de los modelos no lineales, que vienen a corregir dichos problemas. En el caso de los modelos no lineales, lo que se busca es un modelo del tipo: ∑ ,( 1, … , ), ( 1, … , ) Es decir: ∑ 1, … , ), ( , ( 1, … , ) La elección de esa función F determina el modelo considerado. Los modelos más destacados son el modelo logit y el modelo probit. 2.1.2: El modelo logit. Siguiendo con la notación anterior, el modelo de regresión logística es de la forma: ∑ ∑ , ( 1, … , ), ( 1, … , ) O equivalentemente: ln ∑ , ( 13 1, … , ), ( 1, … , ) Este modelo no se sale del rango [0,1] como ocurría con el lineal. Además, las rectas Y=0 e Y=1 son asíntotas horizontales y la tasa de cambio en p(x en función de los cambios en las variables independientes, no es constante en esta ocasión. En la imagen 2.2 podemos ver una representación gráfica de este modelo ajustando los mismos datos que se ajustaron linealmente en la imagen 2.1. Dicha imagen muestra, entre otras cosas, que la curva en esta ocasión sí que está acotada en [0,1] y que los aumentos no son constantes, dando como resultado una representación más fiel a la realidad: Imagen 2.2: Representación gráfica de un modelo logit. Se trata de un modelo que es ampliamente utilizado por la comunidad científica10-14 y, en particular, en estudios epidemiológicos15-18 como el que se presenta en el capítulo 4 de este trabajo. Por esta razón se hará un estudio más detallado del mismo en el apartado 2.2 del presente capítulo. Paralelamente, para un mayor conocimiento se pueden consultar los trabajos de Hosmer y Lemeshow19, Kleinbaum20 o Silva Aycaguer21 entre otros. 2.1.3: El modelo probit. Para el modelo probit se considera la función de densidad de una normal estándar (N(0,1)), siendo ésta: 1 F x √2π e dt,∀x ∈ R La expresión del modelo sigue siendo la misma, pero con esa elección concreta de F: ∑ , ( 14 1, … , ), ( 1, … , ) Este modelo tiene características similares a las del modelo logit, con la particularidad de aproximarse a las asíntotas horizontales (Y=0, Y=1) con mayor rapidez. Es un modelo que también se usa con cierta frecuencia en el ámbito de la investigación científica22-26 y, particularmente, es muy usado en toxicología27-30. Para un mayor conocimiento sobre estos modelos pueden consultarse las obras de Bliss31, Finney32 o Steinbrecher y Shaw33. 2.2: Modelo de regresión logística binaria. El modelo de regresión logística binaria tiene un gran interés desde el punto de vista epidemiológico, como ya se ha visto. En este apartado se describirá el modelo con mayor nivel de detalle. El desarrollo teórico que se presenta a continuación parte de la base de los principales textos sobre regresión logística como son los de Agresti2, Hosmer y Lemeshow19 y Kleinbaun20, así como del libro de Aguilera “Modelos de Respuesta Discreta: Asignatura Modelización y Predicción Estocásticas”34. 2.2.1: Formulación e interpretación. 2.2.1.1: Formulación del modelo Recordemos que un modelo logit viene expresado a través de: ∑ ln , ( 1, … , ), ( 1, … , ) Donde k es el número de variables independientes, n el número de observaciones en cada una, ,…, el vector que contiene las observaciones de cada variable representa la ventaja de respuesta Y=1 para el individuo i-ésimo y el cociente para los valores observados de las variables independientes. El caso más sencillo de modelo logístico es aquel en el que se tiene una única variable independiente continua, esto es: ln 1 Veamos las principales características de la curva de respuesta en el caso de una única variable con un único parámetro b. En primer lugar, se tiene que la curva tiene forma de S y está acotada dentro del intervalo de valores [0,1], siendo las rectas Y=0 e Y=1 asíntotas horizontales. Su crecimiento es monótono, pudiendo ser creciente 15 (si b>0) o decreciente (si b<0). Por tanto, con b>0 la probabilidad de respuesta tenderá a 1 para → ∞ y a 0 para → ∞. La situación se invierte si b<0. Si b=0, la curva es en realidad una recta e Y es independiente de x. La tasa de cambio en p(x) por cada unidad de cambio en x no es constante, ya que viene dada por la pendiente de la recta tangente a la curva. En el caso de tener más de una variable independiente, pero todas continuas, el modelo adopta la forma: ln ∑ , ( 1, … , ), ( 1, … , ) Si se tiene alguna variable independiente categórica, es necesario definir una serie de variables nuevas, artificiales, que servirán para poder pasar de una variable categórica con k categorías a k-1 variables indicadoras de la presencia de cada categoría, por separado35. Dichas variables de diseño, también conocidas como variables ficticias o “dummies”, son introducidas en el modelo como variables continuas, tal y como se explica a continuación: Para crear las k-1 variables de diseño asociadas a una variable con k categorías podemos elegir entre dos posibles métodos: el método parcial y el método marginal. El método parcial consiste en elegir una categoría de referencia dentro de las k posibles y construir para cada una de las restantes una variable que valga 1 en la categoría considerada y 0 en el resto. Por ejemplo, si tenemos una variable con las categorías “bajo”, “medio” y “alto”, podríamos elegir “bajo” como categoría de referencia y crear dos variables de diseño: una que valga 1 cuando se de la categoría “medio” y 0 en los otros dos casos y una segunda variable que valga 1 cuando se de la categoría “alto” y 0 en los otros dos casos. Estas dos variables son las que entran en el modelo. El método marginal es similar en su concepto, salvo que en esta ocasión todas las dummies toman el valor -1 cuando se da la categoría de referencia, en lugar de 0. Un caso especial es el de las variables ordinales, ya que además de poder usar los métodos anteriores, contamos con la posibilidad ordenar las categorías, asignar puntuaciones y tratarla como continua. 16 Lo común en epidemiología es utilizar el método parcial36, 37 , que permite interpretar los parámetros en términos de cocientes de ventajas de forma sencilla, como se verá en el siguiente apartado. 2.2.1.2: Interpretación. En la fórmula del modelo tenemos una serie de coeficientes que son los parámetros del mismo. Además, a partir de ellos pueden calcularse los denominados “cocientes de ventajas”, que serán de mucha utilidad a la hora de interpretar el modelo. En el caso trivial de que todos los coeficientes “ ” del modelo fuesen 0, la variable Y sería independiente de las variables explicativas. Obviando este caso, tenemos que: En un modelo con una única variable independiente, el riesgo relativo de y respuesta Y=1 para dos valores distintos del predictor se define como: y el cociente de ventajas de respuesta Y=1 dados dos valores distintos y del predictor se define como: 1 1 Estando ambos conceptos relacionados a través de la expresión: ∗ 1 1 De tal forma que si la probabilidad de respuesta Y = 1 es cercana a 0, el riesgo relativo puede ser aproximado mediante el cociente de ventajas. Esta situación es beneficiosa para el epidemiólogo, ya que el riesgo relativo no tiene sentido en estudios retrospectivos al estar el número de enfermos (Y=1) prefijado de antemano, mientras que el cociente de ventajas tiene sentido siempre. Por esta razón se interpretarán los parámetros de los modelos en términos de cocientes de ventajas. Teniendo en cuenta esto, pasamos a interpretar los parámetros del modelo: 17 La constante “a” es el valor del logaritmo de la ventaja de respuesta Y=1 para un individuo que tiene valor 0 en todas las variables independientes, o bien cuando la respuesta es independiente de las variables predictoras. Por tanto, es su exponencial la que indica la ventaja de respuesta Y=1. A partir de los parámetros “ ” podemos calcular los cocientes de ventaja de respuesta Y=1 como las exponenciales de dichos parámetros. Es lo que se conoce como “odds ratio” (OR). La interpretación de estos parámetros varía ligeramente según la naturaleza de la variable que le acompaña. Si la variable es continua, el cociente de ventajas representa la variación en la ventaja de respuesta Y=1 por cada unidad de aumento de la variable, cuando el resto de variables permanece constante. Al aumentar en una unidad dicha variable y dejar el resto fijas, la ventaja de respuesta Y=1 queda multiplicada por la exponencial de “ ” (OR). Por lo tanto, si OR=1 (equivalentemente, “ ”=0), significa que dicha variable en concreto no afecta a la respuesta. Si OR<1 (“ ”<0) se tiene que la ventaja de respuesta Y=1 disminuye. En términos epidemiológicos se dice que esa variable es un “factor protector”. Si OR>1 (“ ”>0), la ventaja aumenta y se tiene un “factor de riesgo”. Si la variable original es categórica y se han definido las dummies con el método parcial, tenemos una OR para cada una de las variables de diseño (es decir, cada una de las categorías) y dicho valor representa la ventaja de respuesta Y=1 de esa categoría en concreto con respecto a la categoría de referencia, cuando el resto de variables queda fijo. Los conceptos de factor protector y factor de riesgo siguen teniendo validez en este caso. Si las dummies han sido definidas mediante el método marginal, la interpretación de los parámetros es algo más compleja. Cada parámetro es la desviación del logit de la categoría que lleva asociada con respecto a la media de todos los logit, por lo que la exponencial del parámetro es el cociente entre la ventaja de respuesta Y=1 para su categoría asociada y la media geométrica de todas las ventajas de respuesta Y=1. 2.2.2: Estimación. Sea , ,…, con q=1,...,Q la q-ésima combinación de valores de las R variables explicativas en la muestra de tamaño N. Sea e observaciones muestrales con observaciones. Sea 1| el número de el número de respuestas Y=1 entre dichas . Considerando la constante “a” del modelo como primer elemento del vector de coeficientes “ ”, podemos expresar el modelo en forma matricial como L=XB, donde L es el vector de las transformaciones logit, B es el vector de parámetros “ ” (incluido a) y X es la matriz del diseño que contiene las 18 observaciones de las variables explicativas. Lo más usual es ajustar el modelo a través del “método de máxima verosimilitud” (MV). Los estimadores MV dan máxima probabilidad a los datos observados. Se calculan maximizando la función de verosimilitud de los datos respecto de los parámetros del modelo logit, o equivalentemente, maximizando el logaritmo del núcleo de la función de verosimilitud. Teniendo en cuenta que la función de verosimilitud es el producto de las Q funciones masa de probabilidad de las Q binomiales independientes, partimos de: 1 Calculando el logaritmo del núcleo de la función de verosimilitud anterior, derivando con respecto a cada parámetro e igualando a 0 obtenemos las ecuaciones de verosimilitud: ̂ con ̂ el estimador MV de y 0, 0, … , los estimadores MV de : ∑ ̂ 1 ∑ Debido a la concavidad de la log-verosimilitud, estos estimadores existen y son únicos siempre que exista cierto solapamiento en los datos. En otras palabras, no debe darse el caso en el que a todos los valores para los que la variable respuesta sea 0 correspondan valores de la variable explicativa menores que aquellos para los que la respuesta es 1 (separación completa)38, 39. Las ecuaciones de verosimilitud no son lineales en los parámetros. Para resolverlas, se propone el uso de un método iterativo como es el de “NewtonRaphson”, que puede usarse para el cálculo aproximado del máximo de una función40. Este método parte de una aproximación inicial del máximo y, en cada paso, se toma como localización del máximo de la función la del polinomio de segundo grado obtenido truncando el desarrollo de Taylor de la función en un entorno de la aproximación obtenida en el paso anterior. El método converge siempre que verifique 19 ciertas condiciones de regularidad y el valor inicial sea adecuado. Pueden verse más detalles en la revisión realizada por Tjalling sobre el método de Newton-Raphson40. En nuestro caso, aplicando el método a partir de unos valores iniciales que más adelante se detallan, podemos obtener la aproximación a través de la fórmula iterativa: 1 La convergencia de hacia los estimadores MV ̂ y y es de orden 2 y el criterio de parada suele ser cuando entre dos pasos consecutivos, el cambio en las probabilidades o la log-verosimilitud es inferior a 10 , o el de los parámetros B inferior 40, 41 a 10 . En cuanto a la elección de los valores iniciales adecuados, algunas opciones son asumir que son 0, partir de la estimación obtenida mediante mínimos cuadrados ordinarios, o partir de los valores más adecuados obtenidos mediante análisis discriminante sobre las variables explicativas, como proponen Hosmer y Lemeshow19. Por otra parte, se podría usar el “método de estimación por mínimos cuadrados ponderados” para la estimación de los parámetros. Este método pondera cada observación por el inverso de su varianza, debido a la heterocedasticidad. Se trata de un método que conduce a la obtención de estimadores asintóticamente óptimos para valores grandes, aunque no está exento de dificultades, como la fuerte dependencia de los valores iniciales y el hecho de ignorar los casos en los que 1 y la práctica totalidad de la información de las variables continuas, aunque esto último puede corregirse sustituyendo las frecuencias de respuesta 0 por el valor 0.5. Para la aplicación del método de estimación por mínimos cuadrados ponderados partimos del modelo en forma matricial: L=XB. Sea la proporción observada de respuestas Y=1 en la q-ésima combinación de valores de las variables explicativas. El ajuste del modelo logit se corresponde con el del modelo lineal: , siendo Z el vector de elementos ln y “e” el vector de errores centrados e independientes. La estimación por mínimos cuadrados ponderados de sus parámetros viene dada por: 1 1 20 Los estimadores de máxima verosimilitud tienen, bajo ciertas condiciones, distribución asintótica normal de media el valor poblacional del parámetro estimado y matriz de covarianzas dada por la inversa de la matriz de información de Fisher. Así, son asintóticamente insesgados y además se puede hacer inferencia sobre ellos basándose en dicha distribución normal cuando el tamaño muestral es suficientemente grande. Estos resultados se deben a Wald. 2.2.3: Contrastes sobre los parámetros. 2.2.3.1: Contrastes. Sobre los parámetros podemos realizar contrastes de Wald, contrastes condicionales de razón de verosimilitudes y test de Score. El “contraste de Wald” se basa en la normalidad asintótica de los estimadores MV. La hipótesis nula es que un subconjunto de los parámetros “ ”, denotado ,…, ′ es nulo. El estimador MV de los parámetros del subconjunto C tiene distribución asintótica de media c y matriz de covarianzas igual a la submatriz de la matriz de covarianzas de los parámetros “ ” generada por el subconjunto de ̂ ). El estadístico de Wald es la forma parámetros C (a la que llamaremos cuadrática ̂ ̂ ̂ que asintóticamente sigue una con l grados de libertad (l es el número de parámetros nulos bajo la hipótesis nula), rechazándose ésta a nivel de significación si el valor del estadístico es mayor o igual que el cuantil 1 de la distribución. El “contraste condicional de razón de verosimilitudes” es más fiable en general que el de Wald, siendo su uso más recomendable, razón por la que la selección de variables en el apartado 2.2.5 se plantea con este tipo de contrastes. En este contraste se parte de un modelo M que se ajusta bien y se quiere contrastar si un subconjunto de los parámetros “ ”, denotado ,…, ′ es nulo. Al hacer 0 esos parámetros en M obtenemos un modelo MA anidado a M. La hipótesis nula es C=0 frente al modelo completo M y el estadístico de contraste verifica que: | , es decir, es la diferencia de los contrastes de razón de verosimilitudes de bondad de ajuste para cada modelo. Éste tiene, bajo el modelo ME, distribución con l grados de libertad. Se rechazará la hipótesis nula en las mismas condiciones que en el test de Wald. El “test de Score”, basado en la distribución de las derivadas parciales de la log-verosimilitud, reduce los cálculos con respecto a los anteriores contrastes. Las 21 hipótesis siguen siendo las mismas pero el estadístico, en esta ocasión, es la forma cuadrática: 1 donde es el estimador MV de los parámetros del modelo MA, D( ) el vector de derivadas parciales de la log-verosimilitud evaluado en , con y X es tal que el vector de valores esperados. Este estadístico tiene, bajo la hipótesis nula, distribución con grados de libertad igual al número de componentes nulas en MA. 2.2.3.2: Intervalos de confianza. Basándonos en la distribución normal asintótica de los estimadores MV, podemos construir los siguientes intervalos de confianza a nivel 1 Para los parámetros: Para cada (que sigue una N : , ), se tiene el intervalo: z σ . Para las transformaciones logit (L(x)): Teniendo en cuenta que el estimador MV de L, , tiene distribución asintótica N(L(x), ), se tiene el intervalo: z σ . Para las probabilidades de respuesta Y=1: A través de la transformación ̂ se obtiene el intervalo: 1 Para los cocientes de ventajas: Al tratarse de las exponenciales de las “ ”, basta con tomar exponenciales en sus intervalos de confianza, quedando los intervalos de la forma: 22 2.2.4: Bondad de ajuste. Sea y el número de respuestas Y=1 en las n observaciones correspondientes a la q-ésima combinación de valores de las variables explicativas, con q=1,...,Q. Sean p las probabilidades y m n p las frecuencias esperadas de valores Y=1. Sean p y m sus estimaciones de máxima verosimilitud. El test global de bondad de ajuste del modelo contrasta la hipótesis nula: ∑ : ∀ ∑ 1 1, … , frente a la alternativa de ser distinto para algún valor de q. Si el número de observaciones en cada combinación de valores de las variables explicativas es grande, podemos hacer uso del estadístico de Pearson y del estadístico de Wilks de razón de verosimilitudes. En cambio, si el número de observaciones no es demasiado grande, existe una modificación del estadístico conocida como el estadístico de Hosmer y Lemeshow. Finalmente, algunas medidas globales para la bondad del ajuste son la tasa de clasificaciones correctas, el área bajo la curva ROC y las medidas tipo . Se explican a continuación todos los contrastes y las medidas mencionadas: El estadístico “ de Pearson” es el resultado de sumar los estadísticos de bondad de ajuste a cada una de las distribuciones B(n , p ) que generan a los datos muestrales bajo la hipótesis nula de que las probabilidades p verifiquen el modelo, resultando ser: ̂ ̂ 1 ̂ Este estadístico tiene distribución asintótica con tantos grados de libertad como la diferencia entre el número de parámetros p (transformaciones logit muestrales) y el número de parámetros independientes en el modelo, es decir, Q(R+1), de tal modo que se rechazará a nivel de significación estadístico supere al cuantil de orden 1- , esto es, equivalentemente, cuando el p-valor sea cuando el valor del ; , o . El “test chi-cuadrado de razón de verosimilitudes” se basa en el “estadístico de Wilks”, calculado como menos dos veces el logaritmo del cociente entre el supremo de 23 la verosimilitud bajo la hipótesis nula y el supremo de la verosimilitud en la población. El estadístico resulta ser: 2 Este estadístico, también conocido como “devianza”, tiene la misma distribución asintótica que el de Pearson, de modo que se rechazará la hipótesis nula en las mismas condiciones que en aquel. Para poder asumir la distribución chi-cuadrado de ambos estadísticos, ha de ocurrir que el 80% de las frecuencias estimadas bajo el modelo, m n p , sean mayores que cinco y todas mayores que uno. En caso contrario debe hacerse uso del “test de Hosmer y Lemeshow”19. Para la construcción del estadístico, se agruparán las variables explicativas en G grupos o clases (los autores recomiendan 10 grupos basados en los deciles de las probabilidades estimadas). Sea n el número total de observaciones en el g-ésimo grupo, el número de respuestas Y=1 en el g-ésimo grupo, y ̅ la probabilidad estimada bajo el modelo de respuesta Y=1 para el g-ésimo grupo obtenida como la media de las probabilidades p de los valores de dicho grupo. El estadístico viene dado por: ̅ ̅ 1 ̅ que tiene distribución asintótica chi-cuadrado con G-2 grados de libertad, por lo que con ésta compararemos para rechazar o aceptar la hipótesis nula. Además de los tests previamente descritos, podemos calcular distintas medidas de bondad de ajuste global como la “tasa de clasificaciones correctas”, el “área bajo la curva ROC” o las “medidas tipo ”. La tasa de clasificaciones correctas se calcula como el cociente entre los aciertos y el tamaño muestral. Se entiende por “acierto” el hecho de que la predicción del modelo para la respuesta coincida con el verdadero valor de la respuesta. Para clasificar a los individuos se fija un punto de corte (cut off) tal que si la probabilidad estimada por el modelo para un individuo es menor, se clasifica como Y=0, y si es mayor, como Y=1. Aunque muchas veces ese cut off se toma como 0.5, es más apropiado tomar como punto de corte la proporción de valores Y=1 en la muestra, e 24 incluso más aconsejable es probar distintos puntos de corte y quedarnos con el que maximice la tasa de clasificaciones correctas. La curva ROC es una gráfica que permite evaluar la capacidad del modelo para discriminar. El área bajo la curva ROC representa la probabilidad de que un individuo enfermo elegido al azar tenga mayor probabilidad estimada de padecer la enfermedad que un individuo no enfermo elegido también al azar. Por tanto, lo deseable es que esta medida sea lo más alta posible, considerándose que el modelo es preciso y tiene alta capacidad de discriminación cuando el área es al menos 0.7 19 . El rango de posibles valores es entre 0.5 y 1, correspondiendo el primero a la peor curva ROC posible (la recta y=x) y el segundo a la curva ROC ideal. Para construirla, se representa gráficamente la tasa de verdaderos positivos (en el numerador, el número de individuos con Y=1 para los que el modelo predice también Y=1; en el denominador, total de individuos en la muestra con Y=1) frente a la tasa de falsos positivos (en el numerador, el número de individuos con Y=0 para los que el modelo predice Y=1; en el denominador, total de individuos en la muestra con Y=0) para distintos puntos de corte. En la imagen 2.3 vemos un ejemplo de curva ROC dibujada junto a la recta y=x. Imagen 2.3: Ejemplo de curva ROC. Las medidas tipo intentan adaptar a la regresión logística la medida de la lineal, aunque no son tan potentes19. Se pueden definir distintas medidas de este tipo, pero muchas de ellas presentan inconvenientes como el hecho de decrecer al añadir una variable explicativa al modelo o que llegue a tomar valores pequeños cuando el ajuste es casi perfecto. Como medida en regresión logística se propone la de Cox y Snell: 1 donde V es el máximo de la verosimilitud bajo el modelo nulo y V el máximo de la verosimilitud bajo el modelo ajustado con todos los parámetros. No obstante, el 25 máximo de esa medida es 1 la , pero puede ajustarse para que sea 1 a través de de Nagelkerke, cuya definición es: á 2.2.5: Selección de variables. De todos los posibles modelos que se pueden ajustar, debemos escoger un único modelo final que explique el comportamiento de la variable dependiente en función de las variables independientes. Para tal efecto, la regla de oro que se debe tener siempre presente es el conocido como “principio de parsimonia”, consistente en la elección del modelo que ajuste bien los datos con el menor número de variables posible y lleve a una interpretación sencilla en términos de cocientes de ventajas. Ajustar todos y cada uno de los posibles modelos a partir de n variables explicativas para compararlos entre sí es una labor tediosa e innecesaria. En su lugar, existen procedimientos que ahorran tiempo y cálculos y que nos guían a través de un camino más directo en la búsqueda del mejor modelo posible, como son los procedimientos paso a paso (stepwise). En cada paso del procedimiento stepwise se incluye una nueva variable (stepwise forward) o se elimina una variable (stepwise backward) y se determina si el modelo resultante mejora al anterior. El procedimiento stepwise forward-backward ajusta en primer lugar un modelo para cada una de las variables y, selecciona para entrar en el modelo final aquella variable que origine el mejor modelo. En el siguiente paso, parte del modelo con la variable introducida en el paso anterior y vuelve a calcular todos los modelos posibles que combinan dicha variable con cada una de las restantes, seleccionando para entrar en el modelo la mejor entre todas las que mejoran el modelo del paso anterior. Asimismo, en cada paso se analiza el modelo resultante si se eliminaran variables de los pasos anteriores (salvo el inmediatamente anterior). El procedimiento se repite hasta que en un determinado paso ningún modelo mejore al del paso anterior, quedándonos entonces con este último modelo como el modelo definitivo. La forma de determinar si un modelo mejora a otro o no es a través de contrastes de hipótesis. En los pasos en los que se prueba introducir una nueva variable, se realizan contrastes condicionales de razón de verosimilitudes con el modelo del paso anterior como hipótesis nula y cada uno de los nuevos como hipótesis alternativa en cada contraste. Aquellos contrastes cuyo p-valor sea inferior al 26 nivel de significación requerido determinarán las variables susceptibles de ser introducidas en el modelo en ese paso. Entre todas, se elegirá la más mejore el modelo, en el sentido de reducir más la devianza, con un p-valor adecuado. En los pasos en los que se prueba eliminar una variable, los contrastes tienen como hipótesis nula los modelos resultantes de eliminar cada una de las variables y como hipótesis alternativa el modelo que se tenía del paso anterior. En esta ocasión, las variables susceptibles de ser eliminadas serán aquellas cuyos modelos proporcionen un p-valor que supere el nivel de significación establecido, que por otra parte debe ser mayor que el nivel de significación fijado para la entrada de variables, de modo que se evite que salga la variable introducida en el paso anterior. Hay ciertos detalles que deben tenerse en cuenta cuando se está eligiendo el modelo definitivo. El primero de ellos hace referencia a las variables categóricas: si al menos una variable de diseño es significativa y decide dejarse en el modelo, todas y cada una de las variables de diseño asociadas a la misma variable categórica original deben permanecer en el modelo, sean o no significativas. En este caso se puede contrastar el modelo completo frente al modelo si se sacan todas las dummies de la variable categórica en bloque para tomar una decisión. También hay que tener en mente la recomendación de que el número total de variables en el modelo sea tal que haya al menos 10 individuos de la muestra para cada categoría de respuesta por cada variable del modelo42. Para poder ajustar un modelo con 10 variables, por ejemplo, deberíamos tener al menos 100 individuos con respuesta Y=0 y otros 100 con respuesta Y=1. En el mejor de los casos (50%-50%) se requeriría una muestra de 200 personas, pero el tamaño total de la muestra se dispara si tenemos en cuenta que la distribución de la respuesta no suele ser equitativa sino muy desigual. Mención aparte merecen los conceptos de “interacción”43 y “confusión”44. En ciertas ocasiones ocurre que el grado de asociación de la variable respuesta Y y una variable explicativa X depende de los valores de otra variable explicativa X que se relaciona con X . Decimos entonces que tenemos una interacción de orden 1 entre esas variables. En general, una interacción de orden k es aquella que involucra k+1 variables predictoras, si bien es cierto que en la práctica suelen considerarse solo las de orden 1 porque interacciones de órdenes superiores complican demasiado el modelo y suelen ser difíciles de interpretar. No obstante, si la asociación entre Y y X cambia significativamente por el mero hecho de incluir X en el análisis, diremos que X es una variable de confusión. 27 Cada interacción entre variables continuas añade un sumando a la fórmula del modelo, estando dicho sumando formado por un coeficiente “ ” junto al producto de las variables que interaccionan. En el caso de dos variables categóricas, se añade al modelo un sumando por cada uno de los posibles productos cruzados entre sus variables de diseño. Si se tiene una variable continua interaccionando con una categórica, se incluye en el modelo el producto de la continua con cada una de las variables de diseño de las categóricas. Un último detalle que debe tenerse en cuenta si se introducen interacciones en el modelo es el conocido como “principio jerárquico”43, que obliga a dejar en el modelo todos los términos de orden inferior, hasta las propias variables que forman parte de la interacción, aunque por sí solos no fuesen significativos. 2.2.6: Validación y diagnosis. En el apartado 2.2.4 se han ofrecido herramientas para contrastar la bondad global del ajuste. En éste se describen métodos para estudiar la bondad del ajuste observación a observación, así como la naturaleza de la falta de ajuste. Las técnicas más usadas son las de los residuos y las medidas de influencia. Podemos definir dos tipos de residuos distintos, dependiendo de si están basados en el estadístico o en el . Basados en se definen los “residuos de Pearson” o “residuos estandarizados”: ̂ ̂ 1 ̂ Estos residuos pueden ajustarse para que sigan una N(0,1)45: 1 con h el elemento diagonal de la matriz ̂ 1 ̂ y . Entonces se contrasta la hipótesis nula de que los residuos son 0 frente a que no lo son, rechazando H cuando el residuo en valor absoluto es z .A veces los residuos no ajustados son tratados como N(0,1) para obviar el paso del ajuste. En ese caso se rechaza H si el valor absoluto del residuo es mayor que 2. Basados en se definen los “residuos de la devianza” o “residuos estudentizados”: 28 2 ln ln que pueden ajustarse igualmente para seguir una N(0,1), siendo la convergencia más rápida que en los residuos estandarizados: 1 El contraste de hipótesis es similar al anterior. Existe una última opción muy útil cuando los tamaños son pequeños. Se trata de los “residuos de la devianza modificados”: 1 ∗ 2 ̂ ̂ 1 ̂ Si un resido resulta ser significativo, debe estudiarse su influencia sobre el ajuste del modelo a través de “medidas de influencia” como las “distancias de Cook”46. Se define las distancias de Cook como: 1 1 1 Y las distancias de Cook modificadas: ∗ Donde p X 1 1 1 ̂ ∗ ̂ 1 ̂ 1 es el estimador de p obtenido eliminando las observaciones para las que x . Cada observación tiene su distancia y se considera significativa si es mayor que 1 46. Aparte de los procedimientos anteriores, en estos casos resulta muy útil recurrir también a métodos gráficos. Podemos representar gráficamente los residuos frente a los valores predichos por el modelo ajustado y observar si están todos en una banda horizontal alrededor del 0, o bien representar gráficamente las observaciones frente a los valores predichos y observar si se mantienen en una banda en torno a la recta Y=x, como se sugiere en el libro de Aguilera34. 29 30 Capítulo 3 Aplicación en R El presente capítulo ofrece una descripción detallada del software utilizado para el análisis estadístico propuesto. El software elegido para tal efecto es el paquete estadístico R. Las razones de su elección son diversas: en primer lugar cabe destacar su cantidad y calidad de técnicas y funciones implementadas. Es reseñable también su manejabilidad, así como su versatilidad. Es fácilmente adaptable a una gran variedad de tareas. Además, es libre, accesible y tiene una mayor implantación en la comunidad científica, hasta el punto de considerarse un referente e incluso el estándar para el análisis de datos. En este trabajo se hace uso de la versión “R 2.13.0” con la Interfaz Gráfica de Usuario “R-Commander”, que permite hacer uso del entorno estadístico R de una forma mucho más intuitiva, dotando a R de una interfaz mucho más amigable de cara al usuario. Imagen 3.1: Consola de R (izquierda) e interfaz de R-Commander (derecha). 31 Como ya se detalló en la introducción del trabajo, R es un entorno para la estadística computacional y gráficos, que funciona en una amplia variedad de plataformas. En nuestro caso, Windows XP. Este lenguaje de órdenes ofrece un amplio abanico de posibilidades, entre las cuales detallaremos aquellas que respondan a las necesidades específicas de este proyecto, como son la estadística descriptiva y los modelos de respuesta discreta. Pero antes, veremos unas nociones básicas sobre el manejo de R, dejando, obviamente, cosas en el tintero que pueden consultarse tanto en la página oficial como en el centro de documentación o en otros artículos o libros publicados. En particular, se recomienda como libro de iniciación el de Arriaza et al.47 3.1 Primeros pasos con R. Dedicaremos este apartado a lo que puede considerarse como una “puesta a punto” y unos primeros pasos antes de entrar de lleno en el análisis estadístico, de cara al usuario que se encuentre por primera vez con este software estadístico. Para instalar R, el usuario puede acudir a la página oficial3 del Proyecto R, que tiene el inconveniente de no estar en castellano, y seguir las instrucciones según la plataforma sobre la que se desee instalar. También se podrán instalar paquetes adicionales y revisar la documentación. Además, dicha página es un punto de encuentro en el que se resuelven dudas y se intercambia información. Téngase en cuenta que, dada su naturaleza, R no ofrece un servicio de atención al cliente ni soporte técnico. Corresponderá, por tanto, a la propia comunidad científica solucionar los problemas derivados del uso de R, si queremos que el proyecto funcione. Imagen 3.2: Página oficial del proyecto R. 32 Una vez instalado R, la instalación de R-Commander es tan sencilla como ejecutar R y pinchar en Paquetes->Instalar Paquete(s), elegir el “mirror” de descarga, que en nuestro caso puede ser “Spain (Madrid)” y seleccionar “Rcmdr.” Para ejecutar R-Commander, es necesario escribir la orden “library(“Rcmdr”)” en R. Si se cerrara RCommander sin haber cerrado R, se puede volver a cargar mediante la orden “Commander()” Con R perfectamente operativo en nuestro ordenador, nos disponemos a realizar nuestros primeros análisis estadísticos. Pero antes necesitamos lo primordial, el elemento esencial para poder realizar cualquier estudio estadístico: los datos. Podemos tener datos de diversa índole y en muy diferente formato. Lo primero que debemos saber es cómo introducir esos datos en R. Existe, en primer lugar, la posibilidad de introducir esos datos manualmente. En R-Commander, debemos entrar en “Datos->Nuevo conjunto de datos”. Se nos pedirá que le demos un nombre al conjunto de datos y se abrirá la ventana del editor de datos, en forma de tabla, donde podremos introducirlos sin mayor dificultad, además de otorgarle nombre a cada variable e indicar el tipo de variable que es. Sencillamente hay que tener en cuenta que cada fila representa un caso y cada columna representa una variable. En la siguiente imagen vemos el editor de datos con un cuadro de diálogo abierto para una variable: Imagen 3.3: Editor de datos en R-Commander. En R, la orden para la creación de una base de datos es “data.frame”, pero antes de explicar esta orden, veamos cómo podemos crear un objeto en R y, en particular, un vector de valores o una matriz. 33 Para crear un objeto en R hay que escribir su nombre seguido de los caracteres que se muestran entrecomillados, “<-“, pero sin las comillas. A continuación se escribe la expresión deseada. Con ello hemos realizado una “asignación” y ahora el objeto que lleva por nombre el que pusimos a la izquierda del símbolo tiene asignado el valor a la derecha del símbolo. Para crear un vector debemos usar la orden “c()”, escribiendo dentro del paréntesis los valores de cada coordenada separados por comas. Para crear una matriz usamos la orden “matrix()”, especificando el número de filas con “nrows” y el número de columnas con “ncol” Volviendo a la creación de datos, la orden “data.frame” tiene la siguiente sintaxis: data.frame(..., row.names = NULL, check.rows = FALSE, check.names = TRUE, stringsAsFactors = default.stringsAsFactors()) Tanto ésta como el resto de sintaxis que veremos en este capítulo se pueden consultar en el centro de documentación de R, al cual podemos acceder directamente desde la consola de comandos escribiendo “help(nombre-de-la-función)”. Para hacer uso de este comando, lo esencial es introducir al principio del paréntesis los datos del modo deseado, bien sea a través de listas o vectores creados previamente con órdenes como “c()”, generando valores o usando cualquier otra función cuya salida sea un conjunto de datos. Si se desea convertir alguna variable en factor, debe indicarse “stringsAsFactors=TRUE”. Recordemos que un “factor” es un tipo especial de vector que está formado por distintos niveles de la variable en cuestión, como en el caso de las variables cualitativas. El resto son argumentos que permiten indicar los nombres de las filas o hacer comprobaciones de consistencia. Una vez que tenemos creada nuestra base de datos, puede almacenarse y volver a cargarse en cualquier otro momento. Pero en la realidad, lo habitual es tener una base de datos en algún formato electrónico previo, de modo que no tengamos que generar los datos nosotros mismos, sino tan solo importarlos. R ofrece posibilidades también para esos casos. En particular, R es capaz de importar sin problema bases de datos que estén en formato 34 de archivo de texto, portapapeles, URL, SPSS, Minitab, STATA, Excel, Access o dBase. Desde R-Commander lo único que tenemos que hacer es pinchar en “Datos>Importar datos”, elegir la fuente y seguir las instrucciones. La orden equivalente en R se encuentra dentro de la librería “foreign” y es “read.formato-deseado”, por ejemplo, “read.spss”. La sintaxis de esta orden es: read.spss(file, use.value.labels = TRUE, to.data.frame = FALSE, max.value.labels = Inf, trim.factor.names = FALSE, trim_values = TRUE, reencode = NA, use.missings = to.data.frame) Donde los principales argumentos que se usarán son: “file”: es el archivo original que queremos importar. Tenemos que escribir el nombre y la ubicación dentro de nuestro ordenador (c:/Archivos de programas/...) “use.value.labels”: sirve para convertir variables con etiquetas de valores en factores de R con esos niveles. ”to.data.frame”: permite devolver el marco de datos. “max.value.labels” indica si sólo deben convertirse a factores aquellas variables con etiquetas de valores. Y el resto son argumentos para recodificar datos (aunque se recomienda usar por separado la función “recode”, que se explica en este mismo capítulo), para el tratamiento de los espacios en blanco o los datos perdidos. Un “dato perdido” es una casilla en la base de datos (el data.frame) que no tiene ningún valor asignado. Estos valores surgen en algunas ocasiones cuando una base de datos tiene valores que son incorrectos, están ausentes o presentan anomalías. En algunos de estos casos se le puede asignar al individuo un valor que sea congruente con el resto de caracteres, mediante “técnicas de imputación”. Los casos que queden irremediablemente sin un valor asignado son los que llamaremos “valores perdidos” o “missing”. R se referirá a estos valores como “NA”. Por último, antes de comenzar con los análisis estadísticos, es posible que todavía quede un fleco suelto en nuestra base de datos: que algunas variables no tengan el formato adecuado para los análisis que queremos realizar con ellas. En ese 35 caso, la solución consiste en recodificar dichas variables. En R-Commander realizamos esta tarea entrando en “Datos->Modificar variables de los datos activos>Recodificar variables”. R, por su parte, cuenta con la función “recode”, que se detalla a continuación: La sintaxis de la función recode es: recode(var, recodes, as.factor.result, as.numeric.result=TRUE, levels) Donde: “var” es la variable a recodificar (vector numérico, vector de cadena o factor). “recodes” son las instrucciones propias de la recodificación. Si queremos recodificar un valor aislado, sencillamente se escribirá el valor antiguo, se pondrá “=” y se igualará al valor nuevo asignado. Si queremos recodificar varios valores a un mismo valor nuevo, podemos usar la notación de vector, por ejemplo c(1,2,5)=9, lo que hará que todos los valores que antes eran 1, 2 o 5, ahora valgan 9. Si además los valores que queremos recodificar en un único valor nuevo están seguidos, podemos usar la notación “:” para indicar un rango de valores, por ejemplo, 5:10=’Aprobado’. Y si queremos recodificar el resto de valores que faltan por recodificar, podemos indicarlo mediante “else”, que hace referencia a todo lo que queda por especificar. “as.factor.result es un valor lógico que indica si se devuelve un factor. “as.numeric.result” es un valor lógico que hace que los resultados se consideren numéricos. “levels” es un argumento opcional para especificar el orden de los niveles del factor devuelto. Con todo lo anterior, ya sabemos lo básico y estamos en condiciones de usar R con una base de datos para comenzar a realizar análisis sobre los mismos, como veremos en los siguientes apartados. 36 3.2 Estadística descriptiva básica con R Antes de realizar cualquier análisis estadístico, es muy recomendable realizar un análisis descriptivo de las variables que entran en juego. Lógicamente, las medidas y gráficas consideradas dependerán de la naturaleza de cada variable. A continuación se exponen diferentes formas de explorar y mostrar la información de las variables, según sean categóricas, cualitativas ordinales, cuantitativas, de intervalo o de razón. 3.2.1 Variables categóricas. En caso de tener variables categóricas, al no tener valores numéricos ni orden, lo que procede es calcular la distribución de frecuencias y, en todo caso, la moda. Gráficamente sería adecuado decantarse por un diagrama de sectores. Para calcular la distribución de frecuencias (con los porcentajes) desde RCommander, podemos seleccionar “Estadísticos -> Resúmenes -> Distribución de Frecuencia”, elegir la variable y pulsar aceptar. Las órdenes correspondientes en R son: > .Table<-table(Datos$V1) > 100*.Table/sum(.Table) “Datos” es el nombre que le hayamos puesto al data.frame, es decir, la base de datos con la que estamos trabajando y “V1” es la variable objeto de estudio dentro de data.frame. El comando “table” nos tabula las frecuencias absulutas y mediante la segunda orden obtenemos las relativas. En la imagen 3.4 puede verse el ejemplo sencillo de una variable dicotómica con sus frecuencias absolutas y relativas tabuladas: Imagen 3.4: Ejemplo de tablas de distribución de frecuencias. 37 Es posible que queramos calcular también los intervalos de confianza para las proporciones calculadas, o realizar un contraste de hipótesis. La orden correspondiente en R para dichas operaciones es “prop.test” y se explica a continuación: prop.test(x, n, p = NULL, alternative = c("two.sided", "less", "greater"), conf.level = 0.95, correct = TRUE) Donde: “x” puede ser el vector con el recuento de éxitos o una matriz con el recuento de éxitos y fracasos. “n” es el vector de recuento de intentos, salvo que ya estuviese incluido en el argumento anterior. “p” es un vector de probabilidades de los sucesos, por lo que oscilará entre 0 y 1 y su longitud coincidirá con la de “x”. “alternative” es una cadena de caracteres con la hipótesis alternativa, que puede ser "two.sided" (dos colas), "greater" (mayor que) or "less" (menor que). Basta con dar la inicial. Se usa con la hipótesis nula de que una proporción es igual a un valor dado, o dos proporciones son iguales. En ningún otro caso. “conf.level” es el nivel de confianza del intervalo de confianza, expresado entre 0 y 1. Se usa en los mismos casos que el argumento anterior. “correct” es un valor lógico que indica si debe usarse corrección por continuidad de Yates48. Entre los objetos que devuelve esta función, los más importantes son: “statistic”: devuelve el valor del estadístico chi-cuadrado de Pearson. “parameter”: devuelve los grados de libertad de la distribución chi-cuadrado aproximada. “p.value”: devuelve el p-valor del test. “conf.int”: devuelve un intervalo de confianza para el parámetro poblacional si hay un grupo, o para la diferencia de proporciones si hay dos grupos y no se especifica el valor de “p”. 38 Imagen 3.5: Ejemplo de contraste de hipótesis y cálculo de un intervalo de confianza para una proporción en R. La moda no viene implementada en R, de modo que tendremos que crear nuestra propia función. Normalmente no es necesario calcular la moda porque puede verse simplemente mirando la distribución de frecuencias. No obstante, es posible que en algunos casos concretos venga bien tener definida dicha función. Podemos programar la función moda como sigue: > moda=function(x){names(sort(table(x),decreasing=T))[1]} Siguiendo con el ejemplo anterior, si definimos la función moda y solicitamos la moda de dicha variable, obtenemos que su valor es la categoría “Sí”, como puede verse en la imagen 3.6. Imagen 3.6: Ejemplo de aplicación de la función “moda” definida manualmente. Finalmente, para representar los datos a través de un diagrama de sectores, podemos seleccionar “Gráficas->Gráfica de sectores” desde R-Commander y conformarnos con las opciones que R-Commander estime oportunas para dicha representación, o bien podemos tomar el control sobre las opciones usando la función “pie” en R, que se describe a continuación: La función “pie” tiene la siguiente sintaxis: 39 pie(x, labels = names(x), edges = 200, radius = 0.8, clockwise = FALSE, init.angle = if(clockwise) 90 else 0, density = NULL, angle = 45, col = NULL, border = NULL, lty = NULL, main = NULL, ...) Donde los principales argumentos que se usarán son: “x”: es un vector de cantidades no negativas cuyos valores se muestran en las areas de las porciones del sector. “labels”: son las etiquetas para las porciones. “radius”: es el radio del sector, que se puede reducir para dejar espacio a las etiquetas. “col”: es el vector de colores que se desea usar. Se recomienda cargar el paquete “colorspace” (desde “Paquetes->Cargar paquetes” en R) para aumentar las posibilidades de coloreado de la gráfica, con funciones como por ejemplo “rainbow_hcl”, que distribuye todo el espectro de colores según el número de objetos a colorear. “main”: sirve para introducir un título. Y el resto de argumentos permiten, esencialmente, personalizar la gráfica todo lo que se quiera. Un ejemplo de gráfico de sectores realizado en R a través de la orden “pie” es el siguiente: > pie(table(Datos$ANDAR_FUERA), edges=200, radius=0.7, labels=levels(Datos$ANDAR_FUERA), density=30, angle=45, main="ANDAR_FUERA", col=rainbow_hcl(length(levels(Datos$ANDAR_FUERA)))) Figura 3.7: Gráfico de sectores en R. 40 Si quisiéramos dibujar varios gráficos juntos, debemos usar la orden “par(mfrow=c(x,y))”, donde “x” es el número de filas e “y” el número de columnas en los que queremos dividir el espacio gráfico. 3.2.2 Variables cualitativas ordinales. Cuando tenemos variables cualitativas ordinales, lo adecuado es dar sus medidas de posición, generalmente la mediana y el resto de cuartiles como medidas centrales (aunque puede considerarse cualquier cuantil) y el recorrido intercuartílico como medida de dispersión. La representación gráfica más recomendada es el diagrama de barras. Para calcular los cuantiles desde R-Commander podemos entrar en “Estadísticos->Resúmenes->Resúmenes numéricos”, seleccionar la variable y especificar los cuantiles deseados. La orden desde R es: > numSummary(Datos[,"V1"], statistics=c("quantiles"), quantiles=c(0,.25,.5,.75,1)) Donde “Datos” es el nombre de la base de datos (data.frame), “V1” es la variable objeto de estudio y los valores 0,.25,.5... corresponden a los cuantiles concretos que se quieran calcular. En el ejemplo se están calculando el mínimo, Q1, la mediana, Q3 y el máximo. Podemos ver un ejemplo de los resultados de este análisis en la imagen 3.8. Imagen 3.8: Ejemplo del cálculo de cuantiles. El recorrido intercuartílico relativo se define como el cociente entre la diferencia de los cuartiles tercero y primero, y la mediana. No existe una orden para su cálculo directo, de modo que tendremos que definirlo a mano a partir de los cuartiles ya obtenidos: > RIR<-as.numeric((Q3-Q1)/Q2) 41 En el ejemplo anterior, si solicitamos el cálculo de este parámetro obtenemos: Imagen 3.9: Ejemplo del cálculo de recorrido intercuartílico relativo. Para la representación del diagrama de barra, entramos en “Gráficas->Gráfica de barras” y elegimos la variable, todo ello desde R-Commander. No obstante, es recomendable hacer las representaciones gráficas siempre desde R, ya que nos permite controlar todos los aspectos relacionados con el gráfico. Para ello contamos con la función “barplot”, que se detalla a continuación: La sintaxis de la función barplot es: barplot(height, width = 1, space = NULL, names.arg = NULL, legend.text = NULL, beside = FALSE, horiz = FALSE, density = NULL, angle = 45, col = NULL, border = par("fg"), main = NULL, sub = NULL, xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL, xpd = TRUE, log = "", axes = TRUE, axisnames = TRUE, cex.axis = par("cex.axis"), cex.names = par("cex.axis"), inside = TRUE, plot = TRUE, axis.lty = 0, offset = 0, add = FALSE, args.legend = NULL, ...) Donde los principales argumentos que se usarán son: “col” y “main”, que son argumentos ya explicados en la función “pie”. “height” es un vector o matriz que determina las alturas de las barras que formarán el gráfico. Si es un vector, el gráfico será de barras sencillas con sus alturas. Si es una matriz, el gráfico será de barras juxtapuestas o apiladas, dependiendo del valor lógico en el argumento “beside”. “names.arg” es el vector de nombres que se quieren colocar bajo cada barra. “beside” es un valor lógico que indica si las barras en “height” deben apilarse (FALSE) o aparecer en juxtaposición (TRUE). “sub” añade un subtítulo al gráfico. “xlab” e “ylab” son las etiquetas de los ejes, y “xlim” e “ylim” sus límites. “add” es un valor lógico que indica si las barras deberían agregarse a un gráfico previo. 42 Y el resto de argumentos permiten, esencialmente, personalizar la gráfica todo lo que se quiera. Podemos ver a continuación un ejemplo de diagrama de barras: > barplot(table(Datos$GRUPOS_EDAD), xlab="Grupos de edad", ylab="Frecuancia", col=c("green"), main="Distribución por edades", sub="Población global") Figura 3.10: Ejemplo de diagrama de barras en R. 3.2.3 Variables cuantitativas. En esta ocasión las medidas recomendadas son la media y la desviación típica. En cuanto a gráficos, el diagrama de barras, detallado en el apartado anterior, se presenta como la opción más adecuada. En R-Commander, podemos entrar en “Estadísticos->Resúmenes- >Resúmenes numéricos”, seleccionar la variable e indicar que deseamos la media y la desviación típica. No obstante, el valor “sd” devuelto no es la desviación típica de la población, sino la cuasi-desviación típica calculada a partir de la muestra de tamaño n con n-1 en el denominador. La orden correspondiente en R es: > numSummary(Datos[,"V1"], statistics=c("mean", "sd")) 43 Donde “Datos” es el nombre de nuestra base de datos (data.frame) y “V1” el nombre de la variable objeto de estudio dentro de data.frame. Obsérvese que pueden realizarse con una sola orden los calculos de la media, desviación típica y cuantiles, si fuera necesario: > numSummary(Datos[,"V1"], statistics=c("mean", "sd", "quantiles"), quantiles=c(0,.25,.5,.75,1)) Un ejemplo de lo anterior puede verse en la imagen 3.11. Imagen 3.11: Ejemplo del cálculo de la media, DT y cuantiles en R. 3.2.4 Variables de intervalo. Cuando se trata de datos que están recogidos o van a presentarse en forma de intervalos, la media y la desviación típica siguen siendo medidas adecuadas. En lo que a gráficas se refiere, la elección correcta es el histograma. Desde R-Commander podemos dibujar un histograma entrando en “Gráficas>Histograma”, pudiendo elegir entre el recuento de frecuencias, los porcentajes o las densidades como escala de los ejes. No ostante, se insiste en la recomendación de dibujar usando directamente los comandos de R, en esta ocasión la función “hist”, cuya sintaxis es: hist(x, breaks = "Sturges", freq = NULL, probability = !freq, include.lowest = TRUE, right = TRUE, density = NULL, angle = 45, col = NULL, border = NULL, main = paste("Histogram of" , xname), xlim = range(breaks), ylim = NULL, xlab = xname, ylab, axes = TRUE, plot = TRUE, labels = FALSE, nclass = NULL, warn.unused = TRUE, ...) Los principales argumentos ya han sido explicados con anterioridad en otras funciones gráficas. El argumento “freq” es un valor lógico que indica si el histograma debe 44 representarse con las frecuencias (TRUE) o densidades de probabilidad (FALSE). El resto de argumentos permiten personalizar el gráfico, pero no son necesarios. En la figura 3.12 podemos ver un ejemplo de histograma en R, generado a partir del siguiente código: Hist(Datos$ALTURA_RECOD, scale="percent", breaks="Sturges", col="red", main="Ejemplo de histograma", xlab="Alturas", ylab="Porcentajes", density=20, angle=110) Figura 3.12: Ejemplo de histograma en R 3.2.5 Variables de razón. Una variable de razón es similar a una de intervalo, con la diferencia de que cuenta con un cero absoluto, es decir, el valor cero representa la ausencia total de medida. Por ejemplo, la temperatura (ºC) es una variable de intervalo (la diferencia real entre 2 y 3 grados es la misma que entre 40 y 41 grados), pero no de razón (0ºC no es ausencia de temperatura y no se pueden afirmar cosas como que con 30ºC haga el doble de calor que con 15º). En cambio, el peso (Kg) sí es de razón porque 0Kg es ausencia de peso y se pueden afirmar cosas como que un objeto de 20Kg pesa el doble que otro de 10 Kg. Para el caso de variables de razón podemos usar la media geométrica como medida central y el coeficiente de variación de Pearson como medida de dispersión. A la hora de representarlo gráficamente tenemos distintas opciones: podemos decantarnos por un histograma, un diagrama de dispersión o un diagrama de cajas. 45 Puesto que el logaritmo de la media geométrica es igual a la media aritmética de los logaritmos de los valores de la variable, podemos calcular en R la media geométrica a partir de la aritmética, sencillamente calculando el logaritmo de los datos previamente y luego su media aritmética. El resultado de esta operación no es la media geométrica en sí, sino su logaritmo, por lo que el último paso será aplicarle la función exponencial: > exp(mean(log(V1))) Donde “V1” representa la variable objeto de estudio. Para el cálculo del coeficiente de variación de Pearson podemos crear la siguiente función en R: cvp <- function(x) {ni<- table(x); n<-sum(ni); m1<- mean(x); s1 <-sd(x)*sqrt((n-1)/n); cv<- s1/abs(m1); cv} El diagrama de dispersión es accesible desde R-Commander en “Gráficas>Diagramas de dispersión” y tiene una serie de opciones interesantes desde ese mismo menú. En particular se pueden añadir etiquetas, identificar observación, pasar los datos a escala logarítmica, elegir el tamaño de los textos, así como de los puntos, añadir línea de mínimos cuadrados, etcétera. A diferencia de para otros tipos de gráficos, las opciones ofrecidas por R-commander para la generación de diagramas de dispersión son bastante completas y por esta razón se ofrece, a título ilustrativo, una imagen que muestra dichas opciones aunque, como siempre, será la correspondiente orden en R la que se explique con más detalle. 46 Imagen 3.13: Opciones de R-Commander para los diagramas de dispersión. Por su parte, la función en R para este tipo de gráficos es “scatterplot”, cuya sintaxis es: scatterplot(x,y, reg.line=lm, smooth=TRUE, boxplots=if spread=!by.groups, (by.groups) "" else "xy", span=.5, loess.threshold=5, xlab=deparse(substitute(x)), ylab=deparse(substitute(y)), las=par("las"), lwd=1, lwd.smooth=lwd, lwd.spread=lwd, lty=1, lty.smooth=lty, lty.spread=2, labels, id.method="mahal", id.n=if(id.method[1]=="identify") length(x) else 0, id.cex=1, id.col=palette()[1], log="", jitter=list(), xlim=NULL, ylim=NULL, cex=par("cex"), cex.axis=par("cex.axis"), cex.lab=par("cex.lab"), cex.main=par("cex.main"), cex.sub=par("cex.sub"), groups, by.groups=!missing(groups), legend.title=deparse(substitute(groups)), legend.coords, ellipse=FALSE, levels=c(.5, .95), robust=TRUE, col=if (n.groups == 1) palette()[3:1] else rep(palette(), length=n.groups), pch=1:n.groups, legend.plot=!missing(groups), reset.par=TRUE, grid=TRUE, ...) Donde los principales argumentos son: “xlab”, “ylab”, “xlim” e “ylim”: argumentos ya explicados con anterioridad. “x”: es el vector de coordenadas horizontales o una fórmula. 47 “y”: es el vector de coordenadas verticales. “data”: son los datos a los que aplicarle la fórmula (el data.frame). “subset” sirve para definir un subconjunto de observaciones. “reg.line” es una función que dibuja una recta de regresión. “boxplot” dibuja un diagrama de cajas arriba del gráfico si es para “x”, a la derecha del mismo si es para “y” o ambos para “xy”. “groups” es un factor o variable que divide los datos en distintos grupos, de forma que puedan dibujarse con colores y características distintas. Y el resto de argumentos para incluir leyendas, etiquetas, personalizar tamaños, colores y otras características. A continuación se muestra un ejemplo de diagrama de dispersión en R, cuyo código es el que sigue y su resultado puede verse en la figura 3.14. > scatterplot(ALTURA_RECOD~PESO_RECOD, reg.line=lm, smooth=TRUE, spread=TRUE, boxplots='xy', span=0.5, xlab="Pesos", ylab="Alturas", data=Datos) Figura 3.14: Ejemplo de diagrama de dispersión en R El diagrama de caja tiene también su atajo desde R-Commander, entrando en “Gráficas->Diagrama de caja” y su correspondiente función en R es “boxplot”, con la siguiente sintaxis: 48 boxplot(formula, data = NULL, ..., subset, na.action = NULL) boxplot(x, ..., range = 1.5, width = NULL, varwidth = FALSE, notch = FALSE, outline = TRUE, names, plot = TRUE, border = par("fg"), col = NULL, log = "", pars = list(boxwex = 0.8, staplewex = 0.5, outwex = 0.5), horizontal = FALSE, add = FALSE, at = NULL) Donde los principales argumentos usados son: “data”, “subset”, “x”, “plot”, “col”, “add” y “names”: especificados en otras funciones ya explicadas previamente en este trabajo. “formula”: es una formula del tipo y~grp donde “y” es el vector de valores que se dividen en grupos según una variable de agrupación. “width”: es un vector que da la anchura relativa de las cajas y “varwidth” es un valor lógico que hace que las cajas se dibujen con anchuras proporcionales a las raíces cuadradas del número de observaciones en los grupos. “notch”: es un valor lógico para dibujar una marca a cada lado de las cajas, de forma que si las marcas de dos cajas no se solapan, hay evidencias de que las medianas difieren49. “outline”: valor lógico para dibujar o no los valores anómalos. Mas el resto de argumentos que permiten personalizarlo y no es necesario especificar aquí. A continuación se muestra un ejemplo de diagrama de caja realizado en R: Figura 3.15: Ejemplo de diagrama de caja en R. Por último, cabe destacar que no son éstas las únicas opciones que ofrece R a la hora de realizar un análisis descriptivo unidimensional, pero sí las más comunes y las que vamos a necesitar en este trabajo. 49 3.3 Análisis exploratorio de datos multidimensionales. Además de analizar las variables de forma individual, es interesante realizar también un análisis conjunto de las mismas. Generalmente, este análisis suele ser bidimensional, aunque podría ser, en general, multidimensional. No es una buena idea realizar análisis indiscriminados con todos los posibles cruces de variables (téngase en cuenta que el número de posibilidades será un número combinatorio que crecerá rápidamente a medida que aumente el número de variables iniciales). El usuario debe, por tanto, escoger con criterio qué variables conviene cruzar en este tipo de análisis, basándose en la literatura existente sobre el tema tratado y en su propio conocimiento o experiencia, y todo ello siempre con sentido común. Además, es conveniente completar el análisis con alguna prueba que nos indique el grado de relación entre las variables y la significación estadística de la misma, como puede ser la prueba Chicuadrado. Dependiendo de la naturaleza de las variables, existen distintas técnicas para realizar estos análisis. Si las variables son contínuas, existe un amplio abanico de modelos matemáticos que pueden construirse para explicar el comportamiento de una variable en función de otra. Un ejemplo de ello es el modelo logístico binario explicado en el apartado 3.4. Si las variables son categóricas, la mejor forma de resumir la información que ofrecen de manera conjunta es mediante una tabla de doble entrada. Gráficamente puede representarse a través de diagramas de barras o gráficos de mosaicos. En una tabla de doble entrada encontramos las categorías de una de las variables en las filas y las de la otra en las columnas. La tabla se completa con las frecuencias absolutas o relativas (según convenga) correspondientes al cruce de cada una de las categorías de ambas variables, así como las distribuciones marginales en la última fila y columna, respectivamente. Para realizar este análisis en R-Commander entramos en “Estadísticos->Tablas de contingencia->Tabla de doble entrada”. Después de elegir las variables para las filas y las columnas, las opciones ofrecidas son, entre otras, añadir porcentajes totales, por filas o columnas y realizar algún test de hipótesis. Si queremos realizar este análisis desde R, la orden adecuada para la tabla es: .Table <- xtabs(~V1+V2, data=Datos) 50 Siendo “V1” y “V2” las variables que se quieren cruzar y “Datos” nuestro conjunto de datos (data.frame). Y la orden para el test es: .Test <- chisq.test(.Table, correct=FALSE) A continuación podemos ver un ejemplo de tabla de doble entrada con su test chi-cuadrado en R: .Table <- xtabs(~COM_8_1+VISI_1_1, data=Datos) .Table totPercents(.Table) # Porcentajes del total .Test <- chisq.test(.Table, correct=FALSE) .Test Imagen 3.16: Ejemplo de tabla de doble entrada con test Chi-cuadrado. Para dibujar los gráficos de mosaico contamos con la función mosaicplot, que no será explicada porque no es necesaria para la realización del presente trabajo. El lector interesado puede consultar su sintaxis escribiendo “help(mosaicplot)” en la consola de R. 51 3.4 Ajuste de un modelo logístico binario con R. En este apartado se describirá con detalle el procedimiento para el ajuste de un modelo logístico binario con R. A lo largo del mismo se dará respuesta a cómo abordar cada uno de los apartados vistos en el capítulo 2. En el primer apartado (formulación del modelo) se describirá con detenimiento la principal función de la que se hará uso para el ajuste: la función “glm”. Antes de presentar ésta y el resto de funciones, cabe señalar que desde R-Commander podemos ajustar el modelo entrando en “Estadísticos->Ajuste de modelos->Modelo lineal generalizado” y especificando la fórmula del modelo con las variables deseadas, una expresión de selección en caso necesario, la familia (binomial, poisson...) y la función de enlace (logit, probit...). En nuestro caso, la familia es la binomial y la función de enlace, logit. Imagen 3.17: Opciones de R-Commander para el ajuste de modelo lineal generalizado. En el primer cuadro se introduce el nombre que se le quiere dar al modelo (en el ejemplo, GLM.8). A continuación figura la lista de variables del data.frame. En los cuadros para la fórmula del modelo, se introduce a la izquierda del símbolo ~ la variable dependiente (basta hacer doble click sobre la variable deseada en la lista anterior), y a la derecha del símbolo todas las covariables deseadas con los operadores matemáticos que fueran necesarios (y que figuran justo arriba). En nuestro caso serían sumas de covariables y productos, en el caso de interacción. En la expresión de selección se puede introducir opcionalmente una condición del tipo “Peso>60” para indicar que sólo se incluirán en el modelo los casos que cumplan dicha condición (las personas que pesen más de 60Kg., por ejemplo). Finalmente se 52 indica la familia y la función de enlace (como vimos, en nuestro caso es “binomial” y “logit”, respectivamente). 3.4.1: Formulación del modelo. El modelo logístico binario es un caso particular dentro de los modelos lineales generalizados, cuya expresión ya se ha visto en el apartado 2.2.1. La función de R cuyas características se describen a continuación no sólo sirve para el ajuste del modelo que proponemos, sino para el ajuste, en general, de cualquier modelo lineal generalizado. De esta forma, se explicará el procedimiento general señalando en qué momento debemos indicar que el modelo lineal generalizado deseado es, en concreto, un modelo logístico binario. La función en cuestión es “glm”, cuyo nombre procede de la sigla en inglés (generalized linear model). Dicha función tiene la siguiente sintaxis: glm(formula, family = binomial(link="logit”), data, weights = NULL, subset = NULL, na.action, start = NULL, etastart = NULL, mustart = NULL, offset = NULL, control = glm.control(...), model = TRUE, method = "glm.fit", x = FALSE, y = TRUE, contrasts = NULL, ...) glm.fit(x, y, weights = rep(1, nobs), start = NULL, etastart = NULL, mustart = NULL, offset = rep(0, nobs), family = gaussian(), control = glm.control(), intercept = TRUE) Donde los principales argumentos a usar: “formula”: es la descripción simbólica del modelo a ajustar, es decir, la fórmula en sí del modelo que queremos ajustar. Recordemos que una fórmula es una expresión del tipo: VDep~Cov1+Cov2+... Donde “VDep” es el nombre de la variable dependiente y “Cov1”, “Cov2” (en general “Cov(i)”) son las covariables que entran en el modelo. Si se desea introducir una interacción entre las covariables i y j, debe incluirse en la fórmula el término: ...+Cov(i)*Cov(j)+... 53 y el propio programa tiene en cuenta el principio jerárquico e incluye, sin necesidad de que el usuario lo especifique, cada una de las variables que interaccionan por separado, como sumandos independientes. Un detalle a tener en cuenta es la posibilidad de estar trabajando con más de un data.frame al mismo tiempo, en cuyo caso los nombres de las variables deben ir acompañados del símbolo “$” y el nombre del data.frame del que deben ser extraídas, tal y como se vió en el apartado 3.2. “family”: indica la familia de distribuciones y, en el paréntesis contiguo, “link” indica la función de enlace que debe usarse para el ajuste de este modelo. Las opciones son: binomial, gaussian, Gamma, inverse.gaussian, poisson, quasi, quasibinomial y quasipoisson. Cada una de estas familias acepta distintas funciones de enlace. Así, la familia gaussiana y la familia Gamma aceptan como enlace las funciones “identity”, “log” e “inverse”. La familia binomial acepta como enlaces las funciones “logit”, “probit”, “log” y “cloglog”. El resto de familias con sus funciones de enlace aceptadas puede verse en la documentación de R, tecleando en la consola de comandos “help(family)”. En este punto es, por tanto, donde se especifica el modelo concreto que queremos ajustar, que en nuestro caso será “binomial(link=”logit”). “data”: es un argumento opcional con las variables del modelo, aunque por defecto las variables se tomarán a partir del campo “formula”. “subset”: es un vector opcional que selecciona un subconjunto de la población para realizar el ajuste. Este argumento es innecesario si se carga directamente la base de datos única y exclusivamente con los individuos objeto de estudio. “control”: es una lista de parámetros que controlan el proceso. Su sintaxis viene dada, a su vez, por: glm.control(epsilon=1e-8, maxit=25, trace=FALSE), donde “épsilon” marca la tolerancia de convergencia deseada, “maxit” marca el número máximo de iteraciones del proceso y “trace” es un valor lógico que indica si deben mostrarse las salidas en cada iteración. “method”: indica el método a utilizar. Para el caso de la regresión logística binaria, se utiliza un método que es equivalente al de máxima verosimilitud explicado en el capítulo 2. “intercept”: es un valor lógico que indica si debería incluirse una constante en el modelo. Aparte de lo anterior, existen algunos otros argumentos que pueden incluirse, mas con los argumentos explicados podremos ajustar nuestro modelo perfectamente. 54 Antes de explicar con detenimiento las salidas de esta función, veremos el resumen básico que se nos devuelve a través de la orden “summary”. A través de: summary(Modelo) Donde “Modelo” es el nombre que le hayamos dado a nuestro modelo ajustado, obtenemos la siguiente salida: Imagen 3.18: Ejemplo de salida básica de la función “glm”. Donde puede verse en primer lugar la orden usada para el ajuste del modelo (“call”), incluyendo la formulación del mismo. A continuación se nos muestran los valores mínimo, máximo y los cuartiles (incluida mediana) de los residuos de la devianza (“Deviance Residuals”), que nos serán útiles a la hora de validar el modelo (véase apartado 2.4.6). Seguidamente aparecen los coeficientes del modelo. Por filas encontramos todas las variables incluidas y la constante (“Intercept”). Por columnas encontramos, en primer lugar, los valores estimados de los parámetros (“Estimate”), luego el error estándar de cada estimación (“Std. Error”), seguido del valor del estadístico del test de Wald (“z value”) y su significación (“Pr(>| |)”) junto con un código de puntos y asteriscos que facilitan el visionado rápido de la significación de cada parámetro. Estas dos últimas columnas serán usadas en el apartado 3.4.2 para realizar los contrastes sobre los parámetros del modelo. Por último, tenemos el valor de la devianza del modelo nulo (“Null deviance”) y del nuevo modelo ajustado (“Residual deviance”), junto con los respectivos grados de libertad (“degrees of freedom”) de sus distribuciones asintóticas, el criterio de información de Akaike (“AIC”) (menos dos veces la log-verosimilitud maximizada mas dos veces el número de coeficientes) y el número de iteraciones. 55 Ésta es la salida básica más rápida y directa que reúne en poco espacio bastante información interesante, pero no es lo único que podemos obtener a partir de la función “glm”. Analicemos ahora estos y otros objetos que nos puede devolver esta función por separado: “formula”, “family”, “data” y “control” devuelven lo especificado en dichos argumentos (la familia que se ha usado...) “coefficients” devuelve el vector de coeficientes. “residuals” devuelve los residuos de la última iteración. “fitted.values” devuelve los valores medios ajustados, mediante la transformación de los predictores lineales por la inversa de la función de enlace. “deviance” es, salvo constante, menos 2 veces el máximo de la logverosimilitud. “null.deviance” es el argumento “deviance” pero para el modelo nulo (sin variables). “aic” es el criterio de información de Akaike (recordemos: menos dos veces la log-verosimilitud maximizada mas dos veces el número de coeficientes). “iter” devuelve el número de iteraciones realizadas en el proceso. “converged” es un valor lógico que indica si el algoritmo convergió. Por otra parte, también podemos pedir predicciones de los resultados gracias a la función “predict”, que es una función genérica que devuelve predicciones de los resultados de varios modelos de ajuste. La función llama a métodos concretos que dependen de la clase del primer argumento. 3.4.2: Parámetros. Como ya hemos visto, una de las salidas de la función glm son los parámetros “ ” del modelo. Podemos obtener directamente las estimaciones de los parámetros, con su error estándar, el valor del estadístico Z del test de Wald y el nivel de significación a través de la orden: coef(summary(Modelo)) 56 De este modo, tenemos la información de los contrastes sobre los parámetros y las propias estimaciones de los mismos en una sola salida (ver apartado anterior). A la hora de interpretar los parámetros es conveniente considerar sus exponenciales, de modo que sean interpretables en términos de cocientes de ventajas. Para ello, sencillamente puede usarse la orden “exp” para calcular las exponenciales de los valores obtenidos mediante “coef”. Es muy importante tener en cuenta que al hacer uso de esta orden, R calcula la exponencial de todos los valores de la salida anterior, por lo que estamos calculando más cosas de las necesarias, y algunas incluso absurdas (como las exponenciales del los p-valores). El usuario debe tener en cuenta que lo único que necesita son las exponenciales de la primera columna (la de la estimación de los parámetros) e ignorar el resto. La orden, por tanto, es: exp(coef(summary(Modelo))) Finalmente, para el cálculo de intervalos de confianza encontramos, en la librería MASS, la función “confint”, cuya sintaxis es: confint(object, parm, level = 0.95, ...) Donde: En “object” debemos poner el modelo que hemos ajustado y para el cuál queremos calcular intervalos de confianza. “param” es un vector que indica a qué parámetros se les debe calcular un intervalo de confianza. Es opcional y si no se especifica se calculan para todos los parámetros. “level” es el nivel de confianza (por defecto, 95%). De tal forma que podemos obtener los intervalos de confianza para las “ ” a través de esa orden directa y usando la función matemática “exp” obtener los intervalos correspondientes a las OR, en virtud de lo visto en teoría en el apartado 2.2.3.2, donde se especifica que un intervalo de confianza para la exponencial viene dado a partir de las exponenciales de los extremos de un intervalo de confianza para “ ”. 57 3.4.3: Bondad de ajuste. Tal y como se comentó en el capítulo 2, lo habitual es tener tanto variables discretas como continuas en el modelo. Este hecho hace que sea complicado que se dé la circunstancia de que el 80% de las frecuencias estimadas bajo el modelo sean mayores que cinco y todas mayores que uno, lo que nos lleva a no poder asumir la distribución chi-cuadrado de los principales estadísticos de contraste de bondad de ajuste y tener que recurrir al test de Hosmer y Lemeshow para estudiar la bondad del ajuste global. La función “glm” no devuelve el valor de este estadístico ni su significación, de modo que será necesario definir una nueva función que lo calcule. Dicha función es la que sigue: hosmerlem <-function (y, yhat, g = 10) { cutyhat <-cut(yhat, breaks = quantile(yhat, probs = seq(0, 1, 1/g)), include.lowest = T) obs <- xtabs(cbind(1 - y, y) ~ cutyhat) expect <- xtabs(cbind(1 - yhat, yhat) ~ cutyhat) chisq <- sum((obs - expect)^2/expect) P <- 1 - pchisq(chisq, g - 2) c("X^2" = chisq, Df = g - 2, "P(>Chi)" = P) } Donde “y” es el vector de valores de la variable dependiente, “yhat” son los valores ajustados (obtenidos con la orden “predict”) y “g” el número de grupos a considerar para el cálculo del estadístico (véase apartado 2.2.4). Puesto que no existe una función predefinida en R para el cálculo de la tasa de clasificaciones correctas, ha sido necesario crearla para este trabajo, siendo su sintaxis: 58 tcc<-function(corte,yajus,y) { verpos<-table(yajus>corte & y==1)[2] falpos<-table(yajus>corte & y==0)[2] falneg<-table(yajus<corte & y==1)[2] verneg<-table(yajus<corte & y==0)[2] tasa<-(verpos+verneg)/(verpos+falpos+falneg+verneg)*100 tasa } Donde: “corte” es el punto de corte para clasificar a los individuos en positivos y negativos. “yajus” es el vector de valores ajustados por el modelo. “y” es el vector de valores de la variable dependiente. Para el cálculo del área bajo la curva ROC, Laura Thompson propone en su manual50 una medida equivalente a través de la función “lrm”, del paquete “Design”. Dicha función admite como argumento la fórmula del modelo que ya hemos ajustado con “glm” y los datos a partir de los cuales se ajusta. Con ello se ajustará el mismo modelo que ya teníamos, pero con la ventaja de que entre sus salidas de encuentra una medida llamada “C”, que es un indicador de la correlación entre la respuesta predicha por el modelo ajustado y la respuesta real. Es la probabilidad de concordancia entre las predicciones y los resultados, siendo una medida equivalente al área bajo la curva ROC. La sintaxis es: lrm(formula, data) Donde: “formula” es la fórmula del modelo final al que hemos llegado. “data” es el conjunto de datos (data.frame). 59 3.4.4: Selección de variables. Cuando se ajusta el modelo, es necesario decidir qué variables entran y cuáles se quedan fuera del mismo, tratando siempre de llegar al modelo que mejor explique la variabilidad de la variable dependiente con el menor número de variables independientes (principio de parsimonia). Como vimos en el apartado 2.2.5, una buena técnica es usar el procedimiento “stepwise forward-backward” para elegir paso a paso las variables que entran en el modelo. En cada uno de los pasos hay que ajustar distintos modelos a través de la función “glm” como ya se ha visto previamente, para compararlos luego a través de un contraste. El contraste puede realizarse en R a través la función “anova”: anova(Modelos, test="Chisq") Simplemente introducimos los modelos que queremos contrastar en “Modelos”, separados por comas, e indicamos finalmente que realice un test chi-cuadrado a través de test="Chisq". Con ello obtenemos una salida que nos muestra el análisis de la devianza donde se comparan los modelos. A continuación vemos un ejemplo junto con la explicación de la salida obtenida. Imagen 3.19: Ejemplo de contraste para la selección de variables. En la imagen anterior vemos que se han contrastado dos modelos: el del paso previo (Modelo_1), que sólo incluye la variable edad, y el nuevo (Modelo_2) que incluye, además de la edad, una nueva variable: el sexo. La salida de este análisis es una tabla que tiene en sus filas cada uno de los modelos contrastados (2 en este caso) y en sus columnas encontramos, en primer lugar, “Resid.Df” que son los grados de libertad de la distribución asintótica de la devianza. A continuación “Resid.Dev”, que es el valor de la devianza, seguido de “Df”, que muestra la variación de los grados de libertad. Luego aparece la columna “Deviance”, que muestra la variación de la devianza en el nuevo modelo respecto al anterior. Valores positivos en esta columna 60 indican una disminución y valores negativos, un aumento de la devianza. Finalmente, la columna “P(>| |)” muestra la significación del test, que viene acompañada de un código de puntos y estrellas que permite hacerse una idea sobre la significación en un solo vistazo. En este apartado de selección de variables también puede hacerse uso de la función “recode”, explicada al final del apartado 3.1, en los casos en los que sea necesario recodificar alguna variable antes de introducirla en el modelo, o si se quieren crear manualmente las variables dummies, otorgándole valor 1 a la categoría deseada y 0 al resto, a través de la recodificación. Un ejemplo de esto sería el siguiente: supongamos que tenemos la variable “nivel de estudios” (NIV_ESTUD_GRUPOS) con cuatro categorías codificadas numéricamente (0=“Sin estudios”, 1=“Estudios primarios”, 2=“Estudios secundarios” y 3=“Estudios superiores”). Si quisiéramos crear manualmente la variable dummie correpondiente, por ejemplo, a la categoría “Estudios secundarios”, la orden sería: DatosGlobales&NIV_ESTUD_GRUPO_B_C<recode(DatosGlobales$NIV_ESTUD_GRUPOS, '2=1; else=0; ') 3.4.5: Validación y diagnosis. Como vimos, existen distintas técnicas para analizar la bondad del ajuste observación a observación, como el análisis de los residuos de la devianza. Y en el caso de que algún residuo resulte significativo, será necesario estudiar su influencia sobre el ajuste del modelo mediante medidas de influencia (concretamente, las distancias de Cook). A continuación se explica cómo realizar estos análisis en R. Para el estudio de los residuos de la devianza simplemente echamos mano de la salida básica de la función “glm”, la que se obtiene a través de “summary(Modelo)”. Como se explicó en el apartado 3.4.1 (imagen 3.18), en esa salida se nos muestran los valores mínimo, máximo y los cuartiles (incluida mediana) de los residuos de la devianza (“Deviance Residuals”). A partir de estos datos podemos concluir si existe un buen ajuste caso a caso dependiendo de los valores que tomen los residuos (habitualmente, valores inferiores a 2 en valor absoluto se consideran adecuados para determinar que el ajuste es bueno). 61 Es posible que un modelo tenga un buen ajuste y, aún así, existan determinados casos cuyos residuos sobrepasen el valor máximo aceptable. En esta situación se calcularán las medidas de influencia correspondientes a través de la orden: cook<-coks.distance(Modelo) Donde “Modelo” es el nombre del modelo con el que estamos trabajando. Si procede, se usará la orden “subset” para seleccionar solamente las distancias cooks de los casos cuyos residuos resultaron significativos. Otra opción a la hora de abordar el problema de los residuos significativos es identificar los casos, eliminarlos y volver a ajustar el modelo sin ellos, para comprobar si las covariables siguen siendo las mismas y el ajuste es más fino. Si ese fuera el caso, podríamos ajustar el modelo sin esos casos del siguiente modo: res<-abs(residuals(Modelo)) Modelo_Final=glm(formula, family=binomial(logit), data, subset=res<2) summary(Modelo_Final) Donde: “abs” es la función que calcula el valor absoluto. “residuals()” es la salida devuelta por la función “glm” con los residuos de la devianza del modelo que figure dentro del paréntesis. “Modelo” es el nombre otorgado al modelo que hayamos calculado y del que queramos extraer los casos. La función “glm” tiene los argumentos ya explicados, con la particularidad de que en esta ocasión se hace uso del argumento “subset”, indicándole que solo realice el ajuste con aquellos datos que verifiquen la condición “res<2”, es decir, que los residuos fuesen menores que 2 en valor absoluto. Con todas las órdenes vistas en los apartados anteriores y aplicando el procedimiento visto en el capítulo 2, podremos ajustar nuestro modelo de regresión logística binaria, tal y como se verá en el próximo capítulo. 62 63 Capítulo 4 Aplicación a datos reales Para ilustrar la metodología descrita en el trabajo, se propone su aplicación a un caso real. Como ya se mencionó en la introducción, se utilizarán los datos procedentes de la EDAD-2008, llevada a cabo por el INE entre noviembre de 2007 y febrero de 2008, con el objetivo de conocer la prevalencia, características y factores asociados al dolor crónico en discapacitados, así como la relación dolor crónicoansiedad y dolor crónico-depresión en estos pacientes. 4.1: Introducción y antecedentes del problema. Las enfermedades crónicas, en especial las causantes de dolor, son los principales problemas de salud que afectan a la sociedad actualmente y han sido objeto de investigación en los últimos años tanto por su frecuencia, como por sus efectos sobre la calidad de vida de los enfermos que las padecen. Se estima que el dolor crónico afecta a un tercio de la población en Europa51, siendo comunes las limitaciones funcionales que produce, y las consecuencias sociales y laborales que ocasiona. En España, la prevalencia de dolor crónico en la población general se ha estimado en un 12%52, habiéndose considerado uno de los principales motivos de consulta médica51, 53 y una fuente importante de gastos sanitarios. La discapacidad es también un problema frecuente. Según la EDAD-20084, la prevalencia de discapacidad para el conjunto de la población española era del 8,97%. Ambos procesos (dolor crónico y discapacidad) pueden estar asociados. Sin embargo la relación causal entre ambos no ha sido demostrada, ni si esta relación es bidireccional5-7, 54 . Es conocido que el dolor crónico es una causa importante de discapacidad. Sin embargo, no todas las causas de discapacidad causan dolor7. 64 Algunos estudios sitúan en torno al 50% la prevalencia de dolor crónico en adultos con discapacidad7 y se ha especulado acerca de que las personas con discapacidad podrían tener mayor riesgo de padecer dolor crónico que las personas que no tienen estas limitaciones. Distintos factores como la edad, el sexo y otras variables sociales se han identificado como posibles condicionantes tanto de la forma de enfermar como de la manera en que los pacientes se enfrentan a las consecuencias de la enfermedad55, 56. Sin embargo, el papel que juegan estos factores en la relación entre el dolor crónico y la discapacidad no ha sido suficientemente estudiado57, ni adecuadamente tratada la visión del dolor desde la perspectiva de los pacientes con discapacidad. La comorbilidad entre dolor crónico y alteraciones mentales, especialmente ansiedad o depresión, se ha descrito de manera constante en distintos estudios. Sin embargo, la naturaleza que esta asociación conjunta tiene sobre la discapacidad no ha sido suficientemente aclarada en estudios previos58. Pinto-Meza y cols. han sugerido que, aunque tanto las enfermedades de causa física como las de causa mental se han relacionado con la presencia de discapacidad, la comorbilidad entre ambas es mas discapacitante que la presencia de cada una de ellas por separado59. Por otra parte, otros factores como los trastornos del sueño han sido también relacionados con el dolor crónico60 y se ha visto que aquellos individuos que tenían el sueño alterado por el dolor estaban significativamente más discapacitados que aquellos que no61. Por ello, se propuso realizar este estudio con el principal objetivo de conocer la prevalencia, características y factores asociados al dolor crónico en discapacitados, así como la comorbilidad dolor crónico-ansiedad y dolor crónico-depresión. 4.2: Material y método. La EDAD-2008 se realizó en una muestra de hogares seleccionados al azar, representativos de la geografía española, en los que se entrevistó a todos los convivientes mayores de 6 años que tenían algún tipo de discapacidad. El número final de hogares estudiados fue de 96075, siendo el total de personas con discapacidad entrevistadas 22795. Para este estudio fueron eliminados los individuos que tuvieran valores perdidos en las variables de nuestro interés. El número final de individuos discapacitados sobre los que se realiza este estudio es de 16505. 65 Tal y como se especifica en la metodología de la EDAD-200862, se entiende por discapacidad “toda limitación importante para realizar las actividades de la vida diaria que haya durado o se prevea que vaya a durar más de 1 año y tenga su origen en una deficiencia”. Asimismo, se considera que una persona tiene una discapacidad aunque la tenga superada con el uso de ayudas técnicas externas o con la ayuda o supervisión de otra persona. Para lograr nuestros objetivos, calcularemos la prevalencia de dolor crónico de los discapacitados estudiados en base a una variable llamada "Dolor Crónico Diagnosticado" (DCD), siendo considerada con DCD a toda persona que en la entrevista refería tener el diagnostico de alguna de las siguientes enfermedades: artritis, artrosis, artritis reumatoide, espondilitis anquilopoyética o distrofia muscular. Consideraremos también otras variables que han sido relacionadas con la presencia o ausencia de enfermedades y trastornos mentales en otros estudios55, 56 , como por ejemplo: sexo, edad, nivel de estudios, tamaño del municipio de residencia, presencia de ansiedad crónica, presencia de depresión crónica y número de horas de sueño al día, considerando que una persona alcanza el nivel normal de sueño si duerme 8 horas al día, basándonos en la literatura previa que sitúa este valor fluctuando entre las 7 y 8 horas diarias63, 64. En la tabla 4.1, que se muestra a continuación, podemos ver una descripción de las variables consideradas, incluyendo su nombre en la base de datos, las unidades en que se miden las cuantitativas y los distintos valores o categorías en el caso de variables cualitativas. Tabla 4.1: Descripción de las variables consideradas. Nombre de la variable Nombre en la base de datos Descripción de la variable Tipo de variable Sexo SEXO Sexo del individuo Categórica Edad EDAD Edad del individuo Continua Nivel de estudios NIV_ESTUD_ GRUPOS Mayor nivel de estudios alcanzado por el individuo Categórica Tamaño del municipio TMUNI Horas de sueño al día H_SUEÑO_ 2BLOQUES Ansiedad crónica Depresión crónica ANSI_CRO DEPRE_CRO Tamaño del municipio de residencia del individuo Número de horas de sueño al día, considerando que se alcanza un nivel normal si se duerme 8 o más horas al día El individuo sufre ansiedad crónica El individuo sufre depresión crónica Categórica Categórica (Recodificada de una continua, medida en horas) Categórica Categórica 66 Valores que toma o unidades de medida Hombre Mujer Años Sin estudios Estudios primarios Estudios secundarios Estudios superiores Capital de provincia y municipios de más de 100.000 habitantes De 50.000 a 100.000 habitantes De 20.000 a menos de 50.000 habitantes De 10.000 a menos de 20.000 habitantes Menos de 10.000 habitantes Codificación en la base de datos 1 6 0 1 2 3 1 2 3 4 5 < 8 horas 0 ≥ 8 horas 1 Sí No Sí No 1 0 1 0 Los datos de todas estas variables recogidos para cada uno de los individuos de la encuesta están disponibles, libre y gratuitamente, en la página web del INE65, en formato de microdatos en un archivo de texto. A partir de ese archivo de microdatos se creó la base de datos en formato SPSS y, para la realización de este trabajo, dicha base fue importada en R siguiendo las instrucciones descritas en el capítulo 3. Ésta y el resto de órdenes y comandos de R utilizados para obtener los resultados serán obviados en este capítulo y figurarán en un anexo al final del trabajo. Tras el análisis descriptivo de los datos, se ajustará un modelo de regresión logística binaria para la presencia de DCD. Dicha variable será la variable respuesta del modelo, mientras que las variables predictoras serán, a priori, el resto de variables mencionadas, aunque probablemente no todas figurarán en el modelo final ajustado. En el caso de las variables categóricas, se introducirán en el modelo sus correspondientes variables de diseño, que estaban recogidas en la base de datos bajo el nombre genérico de “NOMBRE_LETRA1_LETRA2”, donde “NOMBRE” es el nombre de la variable original, “LETRA1” indica la posición de la categoría correspondiente a esa dummie en concreto sin contar con la categoría de referencia y “LETRA2” indica el total de categorías de esa variable (sin la de referencia). Por ejemplo, NIV_ESTUD_GRUPOS_B_C es la variable de diseño correspondiente a la segunda categoría tras la de referencia de la variable “nivel de estudios”, es decir, la dummie que vale 1 cuando el individuo tiene estudios secundarios y 0 en caso contrario. La C indica que hay 3 categorías además de la de referencia. Las categorías de referencia de cada variable serán especificas en la tabla resumen del modelo. Finalmente, se considerará también la posibilidad de existencia de ciertas interacciones entre algunas variables, como el sexo con la presencia de ansiedad o depresión crónicas. 4.3: Resultados 4.3.1: Análisis descriptivo. A continuación se realiza un análisis descriptivo de las variables consideradas, en el que podrá verse la distribución tanto de la población total como del subconjunto de la población que padece DCD y el subconjunto de los que no padecen DCD. Para las variables categóricas se ofrecerá la distribución en porcentajes y las modas, con diagramas de sectores en el apartado gráfico y diagramas de barras para las variables “tamaño del municipio” y “nivel de estudios”. Para describir la variable 67 “edad,” que es continua, se mostrarán las medias, desviaciones típicas, cuartiles (incluida la mediana), mínimo y máximo en cada uno de los grupos poblacionales. En el apartado gráfico, se resumirá la información de esta variable a través de gráficos de cajas. A través de R-Commander se ha cargado la base de datos y el análisis descriptivo planteado se ha realizado a través de “estadísticos->resúmenes>distribuciones de frecuencias” y “estadísticos->resúmenes->resúmenes numéricos”. Como ya se ha mencionado, todos los detalles de las sentencias en R figuran en el anexo al final del documento. En la distribución por sexos encontramos una mayoría de mujeres tanto en la población global (63.9%) como en la población con DCD (72.6%), siendo más acusada la diferencia por sexos en la población con DCD, como puede verse. Por el contrario, en población sin DCD son más frecuentes los varones (51.99%). Se ilustra esta situación a través de gráficos de sectores: Figura 4.2: Distribución de la población general, con y sin DCD por sexo. Además, las diferencias encontradas en la distribución por sexo entre los grupos poblacionales con y sin dolor son significativas (p-valor del orden de 10 ), según se desprende del test chi-cuadrado que se muestra en la imagen 4.3. Es de esperar, por tanto, que la variable sexo esté en el modelo final, si bien es cierto que dependerá también del resto de variables que incluyamos, pero a priori parece razonable incluir ésta. Imagen 4.3: Test chi-cuadrado para el estudio de la relación entre el sexo y la presencia de dolor crónico. 68 La edad media en población global es 68 años, con una desviación típica de 16.36. El mínimo y el máximo son, respectivamente, 16 y 104 años, siendo Q1=58, Me=72 y Q3=81. En población con DCD encontramos un ligero aumento generalizado de la edad, con una media de 72 años y desviación típica de 13.83. Los valores mínimo y máximo siguen siendo 16 y 104. Los cuartiles son Q1=63, Me=74 y Q3=82. En población sin DCD, por el contrario, la media disminuye a 63 años, con una desviación típica de 18.62. El mínimo y el máximo son 16 y 102, respectivamente, y los cuartiles son Q1=48, Me=65 y Q3=78. En la figura 4.4 vemos los gráficos de cajas de la variable “edad” para cada grupo poblacional juxtapuestos, para un completo conocimiento de la distribución de ambos por edades de un solo vistazo. Como los tamaños de cada grupo son diferentes, se ha hecho uso del argumento “varwidth” para que la anchura de cada caja esté determinada por el tamaño del grupo. También se ha usado el argumento “notch” para visualizar las marcas de solapamiento que muestran si las medianas son o no significativamente distintas49. Figura 4.4: Distribución de los grupos poblacionales por edades. Podemos observar que las marcas no se solapan y que, por tanto, las medianas en cada grupo son significativamente distintas. Esto nos indica, en particular, que hay diferencias en las edades de los individuos según se padezca o no dolor crónico. El grupo poblacional que está más envejecido es el que padece DCD, mientras que el grupo poblacional que no padece DCD es más joven que el resto. Cabe destacar que la población objeto de estudio está, en general, bastante envejecida, como se resalta en estos gráficos de cajas. Recordemos que este estudio se realizó en población discapacitada. Antes de analizar la variable “tamaño del municipio”, hemos de tener en cuenta que no puede entenderse como variable aleatoria igual que las demás, ya que de 69 alguna forma está determinada por el diseño muestral. A pesar de ello, se ofrece una descripción de esta variable y los resultados del test chi-cuadrado que descarta la relación entre ésta y la presencia de dolor crónico. Se observa que el grueso de la población está principalmente distribuida entre capitales y grandes municipios (38.97% en población global; 38.59% en población con DCD; 39.84% en población sin DCD) o bien ya en municipios muy pequeños (31.31% en población global; 31.88% en población con DCD; 30.28% en población sin DCD), siendo bastante menos frecuentes las categorías intermedias, como puede verse en las salidas tabulares de R: Imagen 4.5: Distribución de los grupos poblacionales por tamaño del municipio. En población global: En población con DCD: En población sin DCD: La información completa sobre la distribución de la población global, con y sin DCD según el tamaño del municipio se muestra también a través de un diagrama de barras con las barras azules correspondientes a la población sin DCD, superpuestas a las rojas correspondientes a la población con DCD y las verdes correspondientes a la población global. De este modo puede verse la distribución y al mismo tiempo comparar los tres grupos. Figura 4.6: Diagrama de barras para la distribución de la población global (verde), con DCD (rojo) y sin DCD (azul) por tamaño del municipio. 70 En la imagen 4.7 se muestran los resultados del test chi-cuadrado que, con un valor p=0.2877, confirma la ausencia de relación entre esta variable y la presencia de dolor crónico diagnosticado. Imagen 4.7: Test chi-cuadrado para el estudio de la relación entre el tamaño del municipio de residencia y la presencia de dolor crónico. Sobre el nivel de estudios destaca una gran mayoría en los tres grupos con estudios primarios (66.56% en población global; 69.31% en población con DCD; 61.54% en población sin DCD) y el bajo porcentaje de personas con estudios superiores (5.68% en población global; 4.46% en población con DCD; 7.89% en población sin DCD). La distribución completa podemos verla en la imagen 4.8 Imagen 4.8: En población global: En población con DCD: En población sin DCD: En el siguiente diagrama de barras se muestra también la información completa sobre la distribución de los tres grupos según el nivel de estudios. Igual que en el caso anterior, las barras azules corresponden a la población sin DCD, las rojas a la población con DCD y las barras verdes a la población global. En el caso de los estudios superiores, apenas puede apreciarse la barra rojo porque tiene prácticamente el mismo número de casos que la azul (476 en población con DCD vs. 461 en población sin DCD). 71 Figura 4.9: Diagrama de barras para la distribución de la población global (verde), con DCD (rojo) y sin DCD (azul) por nivel de estudios. La prueba chi-cuadrado para el análisis de la posible relación entre esta variable y la presencia de dolor crónico se muestra en la imagen 4.10. Con un p-valor del orden de 10 se concluye que sí están relacionadas. Imagen 4.10: Test chi-cuadrado para el estudio de la relación entre el nivel de estudios y la presencia de dolor crónico. Para la variable horas de sueño encontramos un reparto bastante equilibrado de la población tanto global como de DCD y algo más descompensado en población sin DCD. En global encontramos un 53.75% de la población que duerme bien (al menos 8 horas al día) y en población con DCD el porcentaje es de 49.66%. En población sin DCD, es mayor el porcentaje de personas que duerme 8 o más horas (61.2%). Se ilustra esta situación en la figura 4.11. 72 Figura 4.11: Distribución de la población global y con DCD por horas de sueño al día. La relación de esta variable con la presencia del dolor es estadísticamente significativa (p del orden de 10 ), según vemos en los resultados del test: Imagen 4.12: Test chi-cuadrado para el estudio de la relación entre las horas de sueño al día y la presencia de dolor crónico. Los trastornos mentales como ansiedad o depresión crónica no llegan a afectar a una cuarta parte de la población, tanto global como con DCD o sin DCD. La ansiedad crónica está presente en un 15.74% de la población global, un 18.02% en población con DCD y un 11.59% en población sin DCD. La depresión crónica afecta a un 21.3% de la población global, un 24.09% si hablamos de población con DCD y un 16% en población sin DCD. La información se resume gráficamente en los siguientes diagramas de sectores: 73 Figura 4.13: Ansiedad y depresión crónicas en población global y con DCD. Tanto la ansiedad como la depresión están relacionadas con la presencia de dolor crónico, según vemos en la imagen 4.14, que muestra los resultados de los tests chi-cuadrado. Imagen 4.14: Tests chi-cuadrado para el estudio de las relaciones ansiedad-dolor crónico (izquierda) y depresión-dolor crónico (derecha). Por último se han realizado tablas de contingencia entre las variables que indican la presencia de depresión o ansiedad crónicas y la variable sexo, ya que en la literatura encontramos que a menudo están relacionadas66-69. Incluso autores como Keogan et al.70 han determinado que la relación entre depresión y discapacidad (tanto física como mental) es más fuerte en mujeres que en hombres. Mediante la opción de tablas de contingencia de doble entrada, se ha obtenido que un 11.2% de los varones de la población global tienen ansiedad crónica y en las mujeres el porcentaje sube hasta el 18.3%. Los porcentajes de depresión crónica son un 14.8% de varones y un 24.9% de mujeres. Restringiéndonos al grupo que padece DCD, los porcentajes suben ligeramente (unos 2 puntos), pero manteniendo la proporción por sexos. En población sin DCD los porcentajes son inferiores pero aun 74 manteniendo proporción por sexos. En todos los casos el test chi-cuadrado fue significativo, con p-valores del orden de 10 10 en población global y con DCD, y 10 y en población sin DCD. Podemos ver los resultados completos de estos análisis en la imagen 4.15. Imagen 4.15: Tablas de contingencia con porcentajes por sexo y test chi-cuadrado entre las variables sexo-ansiedad crónica y sexo-depresión crónica para cada uno de los grupos poblacionales. En población global: En población con DCD: En población sin DCD: 75 A lo largo de este apartado se ha realizado un análisis descriptivo y se han sacado las primeras conclusiones sobre las posibles relaciones entre variables. No obstante, debemos ser muy cautelosos a la hora de sacar conclusiones sobre las relaciones entre variables, ya que podrían existir otras variables que no se están considerando en este análisis meramente descriptivo y que, de hecho, sean factores de confusión. Es importante señalar que las conclusiones de relaciones entre variables a partir de un análisis descriptivo pueden llevar a resultados falsos e, incluso, contradictorios. La paradoja de Simpson71 es una paradoja estadística que se manifiesta en un cambio en el sentido de una asociación entre dos variables (numéricas o cualitativas) cuando se controla el efecto de una tercera variable. Esta paradoja ha sido ampliamente estudiada por muchos autores y, en el libro de Aguilera del Pino72, "Modelización de tablas de contingencia multidimensionales", pueden verse distintos ejemplos donde la interpretación de resultados de los análisis marginales tiene un efecto catastrófico debido a ello. Son muchos los artículos científicos que hablan sobre la paradoja de Simpson, desde aquellos que se dedican exclusivamente a su estudio desde un punto de vista estadístico, como el de Tu73, hasta los que muestran sus consecuencias en distintas ramas del conocimiento humano74-77. 4.3.2: Prevalencia de dolor crónico diagnosticado. Intencionadamente, no se ha incluido la variable “presencia de DCD” en el análisis descriptivo previo, pues al tratarse de una variable dicotómica con respuesta “Sí” o “No,” la distribución de la población da directamente la prevalencia de dicha dolencia, que era uno de nuestros objetivos. Para mostrar la prevelencia de DCD se ha generado en R un diagrama de sectores que pueden verse en la figura 4.16. Figura 4.16: Prevalencia de DCD en población con discapacidad. Es interesante también conocer la prevalencia de DCD por sexos y por edades. Para tal efecto se ha optado por la categorización de la variable “edad” en distintos grupos. Tales resultados, junto con los resultados globales mostrados en la figura anterior, pueden verse en la tabla 4.17: 76 Tabla 4.17: Prevalencia de DCD por sexos y por edades. Global % IC 95% 56.3% (55.67;57.00) Sexo % IC 95% Varón 40.5% (39.45;41.56) Mujer 66.4% (65.57;67.19) Grupos de edad % IC 95% 6-17 6.8% (4.86;9.45) 18-44 21.5% (19.97;23.16) 45-64 52.2% (50.85;53.52) ≥65 67.0% (66.19;67.81) A la vista de esta tabla podemos extraer algunas conclusiones, como que la prevalencia de DCD es mayor en mujeres que en hombres y va aumentando con la edad. Estos resultados concuerdan con los de otros estudios, como el de Catalá78. Esta mayor prevalencia en ancianos y mujeres ha sido descrita en otros estudios con poblaciones no discapacitadas, donde se ha justificado a través de la mayor esperanza de vida de las mujeres y la mayor prevalencia de enfermedades causantes de dolor en población anciana54, 55. Más aún, tal y como concluyen Stubbs et al.79, las mujeres reportan Dolores de mayor intensidad y mayor discapacidad relacionada con el dolor que los hombres, incluso después de controlar las variables “ansiedad”, “depresión” y otra serie de factores psicológicos. 4.3.3: Factores asociados a la presencia de dolor. Modelo logit. En este apartado se ajusta el modelo de regresión logística binaria para la presencia de dolor crónico diagnosticado. Para ello se seguirán los pasos explicados en el capítulo 2 para el ajuste de un modelo de regresión logística binaria, usando el método de selección stepwise forward-backward. Se hará uso de la función “glm” de R vista en el capítulo 3. Finalmente, se interpretarán los resultados en términos de cocientes de ventajas. 4.3.3.1: Selección de variables. En este aparatado se explican los pasos seguidos dentro del procedimiento de selección stepwise forward-backward. En primer lugar se ajustará el modelo sin variables y a continuación se irán añadiendo y/o eliminando variables en cada paso tal y como se explicó cuando se habló de este método de selección. En cada paso se realizará un test condicional de razón de verosimilitudes para contrastar el modelo del paso anterior con cada uno de los posibles modelos planteados en el nuevo paso. En base a él, se decidirá qué variable debe entrar (o salir) en ese paso, si procede. Obsérvese que a lo largo del proceso se ha considerado la variable “tamaño del municipio” como candidata a formar parte del modelo, a pesar de que el análisis 77 vibariante no lo sugería, sencillamente para comprobar que de verdad no está relacionada aún cuando se consideran otras variables que podrían estar interrelacionadas y, al mismo tiempo, ilustrar la situación en la que una variable debe ser descartada del modelo porque no mejora al modelo anterior. Todo el procedimiento paso a paso puede verse en el anexo de sentencias de R. Paso 1: En primer lugar se ajusta el modelo sin variables, que será el modelo básico frente al que contrastaremos los nuevos modelos en este paso. Posteriormente se ajustará un modelo para cada una de las variables consideradas, incluidas las variables de diseño, y mediante el test condicional de razón de verosimilitudes decidiremos cuál debería entrar. Los resultados del test en este primer paso se observan en la siguiente imagen: Imagen 4.18: Test de razón de verosimilitudes para el paso 1. A la vista de los resultados obtenidos, el modelo 3 es el que más reduce la devianza, con una reducción de 1149, que además es estadísticamente significativa, con un p-valor del orden de 10 . Dicho modelo es el resultante tras añadir la variable “edad”, por lo que decidimos que debe entrar en el modelo la variable “edad” en primer lugar. Paso 2: Para el segundo paso partimos del modelo con la variable “edad” y ajustamos nuevos modelos para cada una de las variables restantes. Los resultados del test RV son: Imagen 4.19: Test de razón de verosimilitudes para el paso 2. 78 El segundo modelo, que es el que incluye la variable sexo, reduce la devianza en 785 y tiene un p-valor del orden de 10 . La siguiente variable que debe entrar en el modelo es, por tanto, el sexo. En este paso aún no procede estudiar el modelo resultante si se eliminara una variable. Paso 3: Siguiendo el mismo procedimiento, se obtiene: Imagen 4.20: Test de razón de verosimilitudes para el paso 3. Determinamos que en el tercer paso debe entrar la variable “horas de sueño”, que reduce la devianza en 200. En este paso procede considerar la posibilidad de que la variable que entró en el paso 1 deba salir ahora. Para ello se ha eliminado del modelo la variable edad y el resultado del test RV puede verse a continuación: Imagen 4.21: Test de razón de verosimilitudes para el modelo del paso 3 si se elimina la variable edad. Al eliminar la edad el modelo empeora, de modo que la mantenemos. En este momento, nuestro modelo cuenta con las variables “sexo”, “edad” y “horas de sueño”. Paso 4: En el cuarto paso entra la variable “ansiedad crónica”, correspondiente al modelo 4 (ver imagen 4.22), ya que disminuye la devianza en 172. Ninguna de las anteriores variables debe salir (ver imagen 4.23), puesto que no mejoraría el modelo. Imagen 4.22: Test de razón de verosimilitudes para el paso 4. 79 Imagen 4.23: Test de razón de verosimilitudes para el modelo del paso 4 si se eliminan variables. Paso 5: Partiendo del modelo con edad, sexo, horas de sueño y ansiedad crónica, ajustamos modelos para cada una de las restantes variables y realizamos el test de RV. Imagen 4.24: Test de razón de verosimilitudes para el paso 5. La variable del modelo 4 es la que debe entrar por reducir la devianza en 50. Dicha variable es la depresión crónica. Veamos qué ocurre si a ese modelo se le extraen las variables anteriores: Imagen 4.25: Test de razón de verosimilitudes para el modelo del paso 5 si se eliminan variables. La eliminación de ninguna variable mejora el modelo, por tanto, se queda con todas las variables que tenía. Paso 6: Imagen 4.26: Test de razón de verosimilitudes para el paso 6. 80 En el sexto paso vemos que debe introducirse la variable “nivel de estudios”, correspondiente al modelo 2 de la imagen anterior. Por otra parte, nos planteamos nuevamente la posibilidad de eliminar del modelo variables previamente incluidas: Imagen 4.27: Test de razón de verosimilitudes para el modelo del paso 6 si se eliminan variables. Y se concluye que no debe salir ninguna variable de los pasos anteriores. Paso 7: Se ajusta el modelo con la variable “tamaño del municipio” pero resulta no ser significativa y no se introduce en el modelo, tal y como vemos en la imagen: Imagen 4.28: Test de razón de verosimilitudes para el paso 7. Paso 8: En este paso se probaron las interacciones sexo*ansiedad crónica y sexo*depresión crónica sugeridas por la literatura pero no fueron incluidas porque no hubo significación en el test de RV. Se muestran los resultados del test en la imagen 4.29: Imagen 4.29: Test de razón de verosimilitudes para el paso 8. Paso 9: Finalmente, comparamos el modelo propuesto con el modelo saturado: 81 Imagen 4.30: Test de razón de verosimilitudes para la comparación del modelo propuesto con el modelo saturado. El modelo propuesto no está lejos del modelo saturado en lo que a bondad de ajuste se refiere. El ligero aumento de la devianza se ve compensado con la notable simplificación del modelo, que no contiene interacciones de ningún orden, mientras que el saturado las contiene todas hasta orden 7. Atendiendo al principio de parsimonia, nuestro modelo es el que mejor explica la variabilidad de la variable dependiente con un menor número de parámetros. Resumen: El modelo final es aquel que incluye las variables “edad”, “sexo”, “horas de sueño”, “ansiedad crónica”, “depresión crónica” y “nivel de estudios”, sin ninguna interacción de ningún orden: Imagen 4.31: Modelo final para la presencia de dolor crónico diagnosticado. 4.3.3.2: Parámetros del modelo. Los contrastes sobre los parámetros se realizan a través de tests de Wald. La función “glm” devuelve automáticamente el estadístico y la significación del test de Wald para cada parámetro del modelo. Según puede verse en la imagen 4.31, los pvalores asociados a las variables “edad”, “sexo”, “horas de sueño”, “ansiedad crónica” y “depresión crónica” son mucho menores de 0.05 (de hecho, son de órdenes entre 10 y 10 ). En cuanto a las tres categorías de la variable “nivel de estudios”, sólo la de “estudios superiores” es estadísticamente significativa, mientras que “estudios 82 secundarios” no llegaría a serlo (aunque su p-valor está relativamente cerca del límite aceptable) y “estudios primarios” está muy lejos de ser significativa. Por tanto, concluimos que todas las variables continuas y al menos una categoría de cada variable categórica son significativas, es decir, sus coeficientes son significativamente distintos de 0, sus OR son significativamente distintas de 1 y los intervalos de confianza para las mismas no contienen al 1 (como se verá seguidamente). Las categorías que están en el modelo sin ser significativas lo están por formar parte de una variable que tiene alguna categoría significativa. Dentro de la librería MASS encontramos la función “confint” para el cálculo de intervalos de confianza, en este caso, para los parámetros de nuestro modelo. Los intervalos de confianza para los parámetros “ ” del modelo ajustado pueden verse en la imagen 4.32. Imagen 4.32: Intervalos de confianza para los parámetros “ ” del modelo. Sin embargo, de cara a la interpretación final del modelo desde el punto de vista de su aplicación, resulta más interesante obtener los intervalos de confianza para las exponenciales de los parámetros “ ” (las OR). Como ya se vio en el apartado 2.2.3.2, basta con tomar exponenciales en los intervalos de confianza de las “ ” para obtener los intervalos de confianza de los cocientes de ventajas. Los resultados obtenidos son: Imagen 4.33: Intervalos de confianza para las OR. Con todo, el modelo final queda resumido en la tabla 4.35, donde se han incluido los coeficientes “ ”, las exponenciales de dichos coeficientes (OR), un intervalo de confianza para las OR al 95% y el p-valor correspondiente a cada variable o categoría obtenido a través del test de Wald. 83 Tabla 4.34: Modelo para la presencia de DCD. Variable Constante Edad Sexo Hombre* Mujer Horas de sueño < 8 horas* ≥ 8 horas Ansiedad Crónica No* Sí Depresión Crónica No* Sí Nivel de estudios Sin estudios* Estudios primarios Estudios secundarios Estudios superiores B ‐2.300 0.036 0.173 ‐0.480 0.467 0.361 ‐0.039 ‐0.131 ‐0.283 OR 0.100 1.037 1.189 0.619 1.595 1.435 0.962 0.877 0.754 IC 95% OR p‐valor (0.081;0.124) <0.001 (1.034;1.039) <0.001 (1.172;1.206) <0.001 (0.577;0.664) <0.001 (1.419;1.794) <0.001 (1.295;1.589) <0.001 (0.856;1.078) 0.503 (0.763;1.008) 0.064 (0.632;0.898) 0.002 *Categoría de referencia Pasemos a interpretar los parámetros del modelo en términos de cocientes de ventajas. Se entiende que cuando estemos hablando de una variable en concreto, las conclusiones extraídas asumen que el resto de variables permanecen fijas. Para la variable sexo se obtuvo una OR=1.189 en la categoría de las mujeres. Eso significa que la ventaja a favor de tener dolor crónico diagnosticado por un médico es aproximadamente 1.189 veces superior en mujeres que en hombres. Para la variable edad, que es continua, se obtuvo una OR=1.037, lo que significa que por cada año que aumenta la edad, aumenta algo más de 1 vez la ventaja a favor de tener dolor crónico diagnosticado por un médico. Equivalentemente, en términos más ilustrativos, la ventaja a favor de tener dolor crónico diagnosticado por un médico se duplica cada 19 años aproximadamente. Para la variable horas de sueño se obtuvo una OR=0.619 en la categoría “dormir 8 o más horas”. Considerando su inverso obtenemos una OR=1.616 para la categoría “dormir menos de 8 horas” tomando como referencia “dormir 8 o más horas”, lo que indica que la ventaja a favor de tener dolor crónico diagnosticado por un médico aumenta 1.616 veces más en individuos que no alcanzan el nivel de sueño apropiado con respecto a aquellos que sí lo alcanzan. Para la variable tener ansiedad crónica se obtuvo una OR=1.595 en la categoría del sí, lo que indica que la ventaja a favor de tener dolor crónico diagnosticado por un médico es aproximadamente una vez y media superior en pacientes con ansiedad crónica con respecto a los que no la tienen. 84 Un resultado similar se obtiene para la presencia de depresión, con una OR=1.435 para el sí, que se interpreta de forma análoga al anterior. Mención aparte merece la variable nivel de estudios, que tiene más de 2 categorías. En dicha variable encontramos las siguientes OR: 0.962 para “estudios primarios”, 0.877 para “estudios secundarios” y 0.754 para “estudios superiores”, auqnue sólo es significativa la categoría de estudios superiores, ya que el resto de pvalores superan 0.5 y los respectivos intervalos de confianza contienen al 1. Tomando la inversa de la OR de esta categoría, obtenemos una OR=1.326 para la categoría “Sin estudios”, tomando como referencia “Estudios superiores”. Esto indica que la ventaja a favor de padecer dolor crónico diagnosticado por un médico es 1.326 veces superior en personas sin estudios que en personas con estudios superiores. 4.3.3.3: Bondad de ajuste. Para determinar la bondad del ajuste global de los datos se ha realizado un test de Hosmer y Lemeshow ya que, al contar con alguna variable continua, no se tiene que el 80% de las frecuencias estimadas bajo el modelo (m n p ) sean mayores que cinco y todas mayores que uno, por lo que no podrá asumirse la distribución chicuadrado. Los resultados de dicho test pueden verse en la imagen 4.35 Imagen 4.35: Resultados del test de Hosmer y Lemeshow para el ajuste global. En el caso del test de Hosmer y Lemeshow se tiene que el ajuste global es bueno cuando no se obtiene significación estadística. Con un p-valor de 0.58, este test indica que hay buen ajuste global. Podemos calcular la tasa de clasificaciones correctas como medida de la bondad del ajuste global, siendo ésta el cociente entre los aciertos y el tamaño muestral. Dicha tabla depende del punto de corte a partir del cual se considerará que un individuo debe clasificarse como positivo. La función para el cálculo de la tasa de clasificaciones correctas explicada en el capítulo 3 contempla la posibilidad de elegir distintos puntos de corte. Ejecutaremos dicha función para puntos de corte entre 0.1 y 0.9, de 0.1 en 0.1, para poder ver cuál de ellos maximiza la tasa de clasificaciones correctas. En la imagen 4.36 se muestran las salidas de R para estos cálculos, donde vemos que el punto de corte que maximiza la tasa de clasificaciones correctas está cerca de 0.5. Si se quiere afinar más, se pueden probar puntos de corte, por ejemplo, entre 0.45 y 0.55 de 0.01 en 0.01. Los resultados de esos cálculos también se 85 muestran en la imagen 4.37 y la conclusión es que 0.5 sigue siendo el mejor punto de corte, que da lugar a una tasa de clasificaciones correctas del 70.44%. Imagen 4.36: Tasas de clasificaciones correctas para distintos puntos de corte. Calcularemos el valor del área bajo la curva ROC a través de una medida equivalente, tal y como se explicó en el apartado 3.4.3. Una vez conocida la fórmula del modelo definitivo, ajustamos el mismo a través de la función “lrm” y solicitamos el resumen que puede verse en la imagen 4.37: Imagen 4.37: Resumen del ajuste del modelo definitivo usando “lrm”. Donde la medida que nos interesa es “C”, equivalente al área bajo la curva ROC, cuyo valor de 0.718 supera el mínimo de 0.7 exigido para considerar que el modelo es preciso con capacidad de discriminación alta, según vimos en el apartado 2.2.4. 4.3.3.4: Validación y diagnosis. La validación completa del modelo se realiza a través del análisis de los residuos de la devianza y las medidas de influencia (en concreto las distancias de Cook). En el análisis de los residuos de la devianza, podemos considerar que los residuos que indican una falta de ajuste global son aquellos que en valor absoluto excedan de 2. En el resumen del modelo final que se puede ver en la imagen 4.26, se observa que los residuos de la devianza tienen un mínimo de -2.3945 y un máximo de 2.0896, lo que a priori indicaría que podría llegar a haber valores que estropearan el ajuste global, en particular por la izquierda. Sin embargo, también se tiene que Q1=1.0810 y Q3=0.8651, valores relativamente lejanos de 2 en valor absoluto y la 86 mediana es 0.6358. En conjunto, se tiene la certeza de que al menos la mitad de los valores está bastante por debajo del máximo permitido y además se deduce que la mayoría del resto de los casos seguirá estando probablemente por debajo de 2. De hecho, se ha procedido a la identificación de los casos cuyos residuos excedían de 2 en valor absoluto y se ha encontrado que son sólo 118 del total de 16505 casos. Imagen 4.38: Recuento de casos cuyos residuos exceden de 2 en valor absoluto. No obstante, a pesar de que esta situación no es alarmante, se han calculado las medidas de influencia mediante la orden “coks.distance”, obteniéndose que el máximo es del órden de 10 (imagen 4.39), con lo que no hay ninguna mayor que 1 y por tanto podemos aceptar el exceso detectado en los residuos y dar por validado nuestro modelo. Imagen 4.39: Cálculo de las distancias de Cook. 4.4: Conclusiones. Como conclusión, podemos afirmar que la prevalencia de dolor crónico es elevada en pacientes con discapacidad y a menudo coexiste con la depresión, la ansiedad y los trastornos del sueño. Es necesario plantearse la necesidad de evaluar y tratar el dolor de manera rutinaria, así como los trastornos psiquiátricos y del sueño en estos pacientes. Otros factores asociados a la presencia de dolor crónico son la edad, el sexo y el nivel de estudios. No podemos pasar por alto una limitación importante como es el hecho de haber utilizado datos secundarios obtenidos por el INE con otra finalidad. Por esta razón, la definición de DCD utilizada en el estudio no incluye algunas enfermedades causantes de dolor crónico como la fibromialgia, debiendo conformarnos con la información de la que se disponía. Extendiendo las conclusiones al resto del trabajo, podemos afirmar que los modelos de regresión logística binaria son muy útiles en epidemiología, como se ha puesto de manifiesto. El ajuste de un buen modelo puede llevarnos a conclusiones importantes que han de ser tenidas en cuenta de cara a mejorar en el futuro. 87 88 Anexo: Sentencias de R. En el capítulo 4 se han omitido las sentencias de R que han generado los resultados mostrados. Dichas sentencias están recogidas en este anexo. #Cargamos R-Commander: library(Rcmdr) #Cargamos el paquete colorspace: local({pkg <- select.list(sort(.packages(all.available = TRUE)),graphics=TRUE) + if(nchar(pkg)) library(pkg, character.only=TRUE)}) #Hacer click en el paquete "colorspace" cuando salga el cuadro de elección de paquetes. #Cargamos las bases de datos de los 3 grupos poblacionales: DatosGlobales <read.spss("C:/Documents and Settings/Administrador/Escritorio/Dropbox/Trabajo fin de máster/Primeras correcciones (verano)/Base de discapacidad 2008.sav", use.value.labels=TRUE, max.value.labels=Inf, to.data.frame=TRUE) DatosDCD <read.spss("C:/Documents and Settings/Administrador/Escritorio/Dropbox/Trabajo fin de máster/Primeras correcciones (verano)/Base DCD.sav", use.value.labels=TRUE, max.value.labels=Inf, to.data.frame=TRUE) DatosNoDCD <read.spss("C:/Documents and Settings/Administrador/Escritorio/Dropbox/T_Fin de máster/Trabajo version noviembre/No DCD.sav", use.value.labels=TRUE, max.value.labels=Inf, to.data.frame=TRUE) ####Variable sexo: #Población global: .Table <- table(DatosGlobales$SEXO) .Table # counts for SEXO round(100*.Table/sum(.Table), 2) # percentages for SEXO remove(.Table) #Población con DCD: .Table <- table(DatosDCD$SEXO) .Table # counts for SEXO round(100*.Table/sum(.Table), 2) # percentages for SEXO remove(.Table) #Población sin DCD: .Table <- table(DatosNoDCD$SEXO) .Table # counts for SEXO round(100*.Table/sum(.Table), 2) # percentages for SEXO remove(.Table) #Diagramas de sectores: (Figura 4.2) par(mfrow=c(1,3)) pie(table(DatosGlobales$SEXO), labels=c("VARÓN (36.1%)","MUJER (63.9%)"), main="Sexo. Población global.", radius=1, col=rainbow_hcl(2)) pie(table(DatosDCD$SEXO), labels=c("VARÓN (27.4%)","MUJER (72.6%)"), main="Sexo. Población con DCD.", radius=1, col=rainbow_hcl(2)) pie(table(DatosNoDCD$SEXO), labels=c("VARÓN (51.99%)","MUJER (48.01%)"), main="Sexo. Población sin DCD.", radius=1, col=rainbow_hcl(2)) #Prueba chi-cuadrado: (Imagen 4.3) .Table <- xtabs(~SEXO+DIAG_SUMA_RECOD, data=DatosGlobales) .Table chisq.test(.Table, correct=FALSE) ####Variable edad: #Población global: numSummary(DatosGlobales[,"EDAD"], statistics=c("mean", "sd", "quantiles"), quantiles=c(0,.25,.5,.75,1)) #Población con DCD: numSummary(DatosDCD[,"EDAD"], statistics=c("mean", "sd", "quantiles"), quantiles=c(0,.25,.5,.75,1)) #Población sin DCD: numSummary(DatosNoDCD[,"EDAD"], statistics=c("mean", "sd", "quantiles"), quantiles=c(0,.25,.5,.75,1)) #Diagramas de cajas para la edad. (Figura 4.4) par(mfrow=c(1,3)) boxplot(DatosGlobales$EDAD, ylab="EDAD", varwidth=TRUE, notch=TRUE, main="Edad. Población global.") boxplot(DatosDCD$EDAD, ylab="EDAD", varwidth=TRUE, notch=TRUE, main="Edad. Población con DCD.") boxplot(DatosNoDCD$EDAD, ylab="EDAD", varwidth=TRUE, notch=TRUE, main="Edad. Población sin DCD.") ####Variable tamaño del municipio: #Población global: (Imagen 4.5) .Table <- table(DatosGlobales$TMUNI) .Table # counts for TMUNI round(100*.Table/sum(.Table), 2) # percentages for TMUNI remove(.Table) #Población con DCD: (Imagen 4.5) .Table <- table(DatosDCD$TMUNI) .Table # counts for TMUNI round(100*.Table/sum(.Table), 2) # percentages for TMUNI 89 remove(.Table) #Población sin DCD: (Imagen 4.5) .Table <- table(DatosNoDCD$TMUNI) .Table # counts for TMUNI round(100*.Table/sum(.Table), 2) # percentages for TMUNI remove(.Table) #Diagrama de barras: (Figura 4.6) names=c("1","2","3","4","5") par(mfrow=c(1,1)) barplot(table(DatosGlobales$TMUNI), names.arg=FALSE, col="green") barplot(table(DatosDCD$TMUNI), names.arg=names, xlab="Tamaño del municipio", ylab="Frecuencia", col="red", main="Distribución de la población por tamaño del municipio", sub="1: Cap. de prov. y municipios >100.000 hab.; 2: De 50.000 a 100.000 hab.; 3: De 20.000 a 50.000 hab.; 4: De 10.000 a 20.000 hab.; 5: <10.000 hab.", add=TRUE) barplot(table(DatosNoDCD$TMUNI), names.arg=names, xlab="Tamaño del municipio", ylab="Frecuencia", col="blue", main="Distribución de la población por tamaño del municipio", sub="1: Cap. de prov. y municipios >100.000 hab.; 2: De 50.000 a 100.000 hab.; 3: De 20.000 a 50.000 hab.; 4: De 10.000 a 20.000 hab.; 5: <10.000 hab.", add=TRUE) #Prueba chi-cuadrado: (Imagen 4.7) .Table <- xtabs(~TMUNI+DIAG_SUMA_RECOD, data=DatosGlobales) .Table chisq.test(.Table, correct=FALSE) ####Variable nivel de estudios: #Población global: (Imagen 4.8) .Table <- table(DatosGlobales$NIV_ESTUD_GRUPOS) .Table # counts for NIV_ESTUD_GRUPOS round(100*.Table/sum(.Table), 2) # percentages for NIV_ESTUD_GRUPOS remove(.Table) #Población con DCD: (Imagen 4.8) .Table <- table(DatosDCD$NIV_ESTUD_GRUPOS) .Table # counts for NIV_ESTUD_GRUPOS round(100*.Table/sum(.Table), 2) # percentages for NIV_ESTUD_GRUPOS remove(.Table) #Población sin DCD: (Imagen 4.8) .Table <- table(DatosNoDCD$NIV_ESTUD_GRUPOS) .Table # counts for NIV_ESTUD_GRUPOS round(100*.Table/sum(.Table), 2) # percentages for NIV_ESTUD_GRUPOS remove(.Table) #Diagrama de barras: (Figura 4.9) names=c("1","2","3","4") par(mfrow=c(1,1)) barplot(table(DatosGlobales$NIV_ESTUD_GRUPOS), names.arg=FALSE, col="green") barplot(table(DatosDCD$NIV_ESTUD_GRUPOS), names.arg=names, xlab="Nivel de estudios", ylab="Frecuencia", col="red", main="Distribución de la población por nivel de estudios", sub="1: Sin estudios; 2: Estudios primarios; 3: Estudios secundarios; 4: Estudios superiores", add=TRUE) barplot(table(DatosNoDCD$NIV_ESTUD_GRUPOS), names.arg=names, xlab="Nivel de estudios", ylab="Frecuencia", col="blue", main="Distribución de la población por nivel de estudios", sub="1: Sin estudios; 2: Estudios primarios; 3: Estudios secundarios; 4: Estudios superiores", add=TRUE) #Prueba chi-cuadrado: (Imagen 4.10) .Table <- xtabs(~NIV_ESTUD_GRUPOS+DIAG_SUMA_RECOD, data=DatosGlobales) .Table chisq.test(.Table, correct=FALSE) ####Variable horas de sueño #Población global: .Table <- table(DatosGlobales$H_SUEÑO_2BLOQUES) .Table # counts for H_SUEÑO_2BLOQUES round(100*.Table/sum(.Table), 2) # percentages for H_SUEÑO_2BLOQUES remove(.Table) #Población con DCD: .Table <- table(DatosDCD$H_SUEÑO_2BLOQUES) .Table # counts for H_SUEÑO_2BLOQUES round(100*.Table/sum(.Table), 2) # percentages for H_SUEÑO_2BLOQUES remove(.Table) #Población sin DCD: .Table <- table(DatosNoDCD$H_SUEÑO_2BLOQUES) .Table # counts for H_SUEÑO_2BLOQUES round(100*.Table/sum(.Table), 2) # percentages for H_SUEÑO_2BLOQUES remove(.Table) #Diagramas de sectores: (Figura 4.11) par(mfrow=c(1,3)) pie(table(DatosGlobales$H_SUEÑO_2BLOQUES), labels=c("De 0-7 h. (46.25%)","8 o más h. (53.75%)"), main="Población global.", radius=1, col=rainbow_hcl(2)) pie(table(DatosDCD$H_SUEÑO_2BLOQUES), labels=c("De 0-7 h. (50.34%)","8 o más h. (49.66%)"), main="Población con DCD.", radius=1, col=rainbow_hcl(2)) pie(table(DatosNoDCD$H_SUEÑO_2BLOQUES), labels=c("De 0-7 h. (38.8%)","8 o más h. (61.2%)"), main="Población sin DCD.", radius=1, col=rainbow_hcl(2)) #Prueba chi-cuadrado: (Imagen 4.12) .Table <- xtabs(~H_SUEÑO_2BLOQUES+DIAG_SUMA_RECOD, data=DatosGlobales) .Table chisq.test(.Table, correct=FALSE) ####Trastornos psiquiátricos: #Ansiedad crónica en población global: .Table <- table(DatosGlobales$ANSI_CRO) .Table # counts for ANSI_CRO round(100*.Table/sum(.Table), 2) # percentages for ANSI_CRO 90 remove(.Table) #Ansiedad crónica en población con DCD: .Table <- table(DatosDCD$ANSI_CRO) .Table # counts for ANSI_CRO round(100*.Table/sum(.Table), 2) # percentages for ANSI_CRO remove(.Table) #Ansiedad crónica en población sin DCD: .Table <- table(DatosNoDCD$ANSI_CRO) .Table # counts for ANSI_CRO round(100*.Table/sum(.Table), 2) # percentages for ANSI_CRO remove(.Table) #Depresión crónica en población global .Table <- table(DatosGlobales$DEPRE_CRO) .Table # counts for DEPRE_CRO round(100*.Table/sum(.Table), 2) # percentages for DEPRE_CRO remove(.Table) #Depresión crónica en población con DCD: .Table <- table(DatosDCD$DEPRE_CRO) .Table # counts for DEPRE_CRO round(100*.Table/sum(.Table), 2) # percentages for DEPRE_CRO remove(Table) #Depresión crónica en población sin DCD: .Table <- table(DatosNoDCD$DEPRE_CRO) .Table # counts for DEPRE_CRO round(100*.Table/sum(.Table), 2) # percentages for DEPRE_CRO remove(Table) #Diagramas de sectores: (Figura 4.13) par(mfrow=c(2,3)) pie(table(DatosGlobales$ANSI_CRO), labels=c("No (84.26%)","Sí (15.74%)"), main="Tiene ansiedad crónica. Población global.", radius=1, col=rainbow_hcl(2)) pie(table(DatosDCD$ANSI_CRO), labels=c("No (81.98%)","Sí (18.02%)"), main="Tiene ansiedad crónica. Población con DCD.", radius=1, col=rainbow_hcl(2)) pie(table(DatosNoDCD$ANSI_CRO), labels=c("No (88.41%)","Sí (11.59%)"), main="Tiene ansiedad crónica. Población sin DCD.", radius=1, col=rainbow_hcl(2)) pie(table(DatosGlobales$DEPRE_CRO), labels=c("No (78.7%)","Sí (21.3%)"), main="Tiene depresión crónica. Población global.", radius=1, col=rainbow_hcl(2)) pie(table(DatosDCD$DEPRE_CRO), labels=c("No (75.91%)","Sí (24.09%)"), main="Tiene depresión crónica. Población con DCD.", radius=1, col=rainbow_hcl(2)) pie(table(DatosNoDCD$DEPRE_CRO), labels=c("No (84%)","Sí (16%)"), main="Tiene depresión crónica. Población sin DCD.", radius=1, col=rainbow_hcl(2)) #Pruebas chi-cuadrado: (Imagen 4.14) .Table <- xtabs(~ANSI_CRO+DIAG_SUMA_RECOD, data=DatosGlobales) .Table chisq.test(.Table, correct=FALSE) .Table <- xtabs(~DEPRE_CRO+DIAG_SUMA_RECOD, data=DatosGlobales) .Table chisq.test(.Table, correct=FALSE) #Tabla de contingencia Sexo-Ansiedad crónica en población global. (Imagen 4.15) .Table <- xtabs(~SEXO+ANSI_CRO, data=DatosGlobales) .Table rowPercents(.Table) # Row Percentages .Test <- chisq.test(.Table, correct=FALSE) .Test remove(.Test) remove(.Table) #Tabla de contingencia Sexo-Depresión crónica en población global. (Imagen 4.15) .Table <- xtabs(~SEXO+DEPRE_CRO, data=DatosGlobales) .Table rowPercents(.Table) # Row Percentages .Test <- chisq.test(.Table, correct=FALSE) .Test remove(.Test) remove(.Table) #Tabla de contingencia Sexo-Ansiedad crónica en población con DCD. (Imagen 4.15) .Table <- xtabs(~SEXO+ANSI_CRO, data=DatosDCD) .Table rowPercents(.Table) # Row Percentages .Test <- chisq.test(.Table, correct=FALSE) .Test remove(.Test) remove(.Table) #Tabla de contingencia Sexo-Depresión crónica en población con DCD. (Imagen 4.15) .Table <- xtabs(~SEXO+DEPRE_CRO, data=DatosDCD) .Table rowPercents(.Table) # Row Percentages .Test <- chisq.test(.Table, correct=FALSE) .Test remove(.Test) remove(.Table) #Tabla de contingencia Sexo-Ansiedad crónica en población sin DCD. (Imagen 4.15) .Table <- xtabs(~SEXO+ANSI_CRO, data=DatosNoDCD) .Table rowPercents(.Table) # Row Percentages .Test <- chisq.test(.Table, correct=FALSE) .Test 91 remove(.Test) remove(.Table) #Tabla de contingencia Sexo-Depresión crónica en población sin DCD. (Imagen 4.15) .Table <- xtabs(~SEXO+DEPRE_CRO, data=DatosNoDCD) .Table rowPercents(.Table) # Row Percentages .Test <- chisq.test(.Table, correct=FALSE) .Test remove(.Test) remove(.Table) #Cálculo de la prevalencia de DCD en población discapacitada: .Table <- table(DatosGlobales$DIAG_SUMA_RECOD) .Table # counts for DIAG_SUMA_RECOD round(100*.Table/sum(.Table), 2) # percentages for DIAG_SUMA_RECOD remove(.Table) #Diagrama de sectores para la prevalencia de DCD en población discapacitada. (Figura 4.16) nombres<-c("No (43.66%)", "Sí (56.34%)") pie(table(DatosGlobales$DIAG_SUMA_RECOD), labels=nombres, main="Prevalencia de DCD", radius=1, col=rainbow_hcl(length(levels(DatosGlobales$DIAG_SUMA_RECOD)))) #Prevalencia de DCD por sexo y edad. (Tabla 4.17) .Table <- xtabs(~SEXO+DIAG_SUMA_RECOD, data=DatosGlobales) .Table rowPercents(.Table) # Row Percentages remove(.Table) .Table <- xtabs(~GRUPOS_EDAD+DIAG_SUMA_RECOD, data=DatosGlobales) .Table rowPercents(.Table) # Row Percentages remove(.Table) #Intervalos de confianza. (Tabla 4.17) #Cálculo de un intervalo de confianza para la prevalencia de DCD global. prop.test(12159, 21583, conf.level = 0.95) #Cálculo de un intervalo de confianza para la prevalencia de DCD en varones. prop.test(3394, 8380, conf.level = 0.95) #Cálculo de un intervalo de confianza para la prevalencia de DCD en mujeres. prop.test(8765, 13203, conf.level = 0.95) #Cálculo de un intervalo de confianza para la prevalencia de DCD en personas de 6 a 17 años. prop.test(35, 513, conf.level = 0.95) #Cálculo de un intervalo de confianza para la prevalencia de DCD en personas de 18 a 44 años. prop.test(561, 2607, conf.level = 0.95) #Cálculo de un intervalo de confianza para la prevalencia de DCD en personas de 45 a 64 años. prop.test(2844, 5450, conf.level = 0.95) #Cálculo de un intervalo de confianza para la prevalencia de DCD en personas de 65 o más años. prop.test(8719, 13013, conf.level = 0.95) ########################################################## #Ajuste del modelo para DCD ########################################################## #Paso 1. Ajuste del modelo para cada variable. #Modelo sin variables: Modelo_0<-glm(formula = DIAG_SUMA_RECOD ~ NULL, family = binomial(logit), data = DatosGlobales) summary(Modelo_0) #Modelos con cada variable: Modelo_1_1<-glm(formula = DIAG_SUMA_RECOD ~ SEXO, family = binomial(logit), data = DatosGlobales) summary(Modelo_1_1) Modelo_1_2<-glm(formula = DIAG_SUMA_RECOD ~ EDAD, family = binomial(logit), data = DatosGlobales) summary(Modelo_1_2) Modelo_1_3<-glm(formula = DIAG_SUMA_RECOD ~ NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_ESTUD_GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) summary(Modelo_1_3) Modelo_1_4<-glm(formula = DIAG_SUMA_RECOD ~ TMUNI_A_D+TMUNI_B_D+TMUNI_C_D+TMUNI_D_D, family = binomial(logit), data = DatosGlobales) summary(Modelo_1_4) Modelo_1_5<-glm(formula = DIAG_SUMA_RECOD ~ H_SUEÑO_2BLOQUES, family = binomial(logit), data = DatosGlobales) summary(Modelo_1_5) Modelo_1_6<-glm(formula = DIAG_SUMA_RECOD ~ ANSI_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_1_6) Modelo_1_7<-glm(formula = DIAG_SUMA_RECOD ~ DEPRE_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_1_7) #Test RV. (Imagen 4.18) anova(Modelo_0, Modelo_1_1, Modelo_1_2, Modelo_1_3, Modelo_1_4, Modelo_1_5, Modelo_1_6, Modelo_1_7, test="Chisq") #Nos quedamos con el modelo que incluye constante+edad: Modelo_1=Modelo_1_2 #Paso 2. Ha entrado la edad. Ajuste del modelo con cada una de las restantes variables. Modelo_2_1<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO, family = binomial(logit), data = DatosGlobales) summary(Modelo_2_1) Modelo_2_2<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_ESTUD_GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) summary(Modelo_2_2) 92 Modelo_2_3<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+TMUNI_A_D+TMUNI_B_D+TMUNI_C_D+TMUNI_D_D, family = binomial(logit), data = DatosGlobales) summary(Modelo_2_3) Modelo_2_4<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+H_SUEÑO_2BLOQUES, family = binomial(logit), data = DatosGlobales) summary(Modelo_2_4) Modelo_2_5<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+ANSI_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_2_5) Modelo_2_6<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+DEPRE_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_2_6) #Test RV. (Imagen 4.19) anova(Modelo_1, Modelo_2_1, Modelo_2_2, Modelo_2_3, Modelo_2_4, Modelo_2_5, Modelo_2_6, test="Chisq") #Nos quedamos con el modelo que incluye constante+edad+sexo: Modelo_2=Modelo_2_1 #Paso 3. Han entrado la edad y el sexo. Ajuste del resto de modelos. Modelo_3_1<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_ESTUD_GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) summary(Modelo_3_1) Modelo_3_2<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+TMUNI_A_D+TMUNI_B_D+TMUNI_C_D+TMUNI_D_D, family = binomial(logit), data = DatosGlobales) summary(Modelo_3_2) Modelo_3_3<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES, family = binomial(logit), data = DatosGlobales) summary(Modelo_3_3) Modelo_3_4<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+ANSI_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_3_4) Modelo_3_5<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+DEPRE_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_3_5) #Test RV. (Imagen 4.20) anova(Modelo_2, Modelo_3_1, Modelo_3_2, Modelo_3_3, Modelo_3_4, Modelo_3_5, test="Chisq") #Nos quedamos con el modelo que incluye constante+edad+sexo+horas de sueño: Modelo_3=Modelo_3_3 #Modelo si se elimina la edad: Modelo_3_sin_1<-glm(formula = DIAG_SUMA_RECOD ~ SEXO+H_SUEÑO_2BLOQUES, family = binomial(logit), data = DatosGlobales) summary(Modelo_3_sin_1) #Test RV. (Imagen 4.21) anova(Modelo_3, Modelo_3_sin_1, test="Chisq") #No debe salir el sexo. #Paso 4. Han entrado la edad, el sexo, y las horas de sueño. Ajuste de los nuevos modelos. Modelo_4_1<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_ESTUD_GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) summary(Modelo_4_1) Modelo_4_2<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+TMUNI_A_D+TMUNI_B_D+TMUNI_C_D+TMUNI_D_D, family = binomial(logit), data = DatosGlobales) summary(Modelo_4_2) Modelo_4_3<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_4_3) Modelo_4_4<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+DEPRE_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_4_4) #Test RV. (Imagen 4.22) anova(Modelo_3, Modelo_4_1, Modelo_4_2, Modelo_4_3, Modelo_4_4, test="Chisq") #Nos quedamos con el modelo que incluye constante+sexo+edad+horas de sueño+ansiedad crónica: Modelo_4=Modelo_4_3 #Modelo si se elimina la edad: Modelo_4_sin_1<-glm(formula = DIAG_SUMA_RECOD ~ SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_4_sin_1) #Modelo si se elimina el sexo: Modelo_4_sin_2<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+H_SUEÑO_2BLOQUES+ANSI_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_4_sin_2) #Test RV. (Imagen 4.23) anova(Modelo_4, Modelo_4_sin_1, Modelo_4_sin_2, test="Chisq") #No debe salir ninguna variable. #Paso 5. Han entrado la edad, el sexo, las horas de sueño y la ansiedad crónica. Ajuste de los nuevos modelos. Modelo_5_1<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_ESTUD_GRUP OS_C_C, family = binomial(logit), data = DatosGlobales) summary(Modelo_5_1) Modelo_5_2<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+TMUNI_A_D+TMUNI_B_D+TMUNI_C_D+TMUNI_D_D, family = binomial(logit), data = DatosGlobales) summary(Modelo_5_2) Modelo_5_3<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_5_3) #Test RV. (Imagen 4.24) anova(Modelo_4, Modelo_5_1, Modelo_5_2, Modelo_5_3, test="Chisq") 93 #Nos quedamos con el modelo que incluye constante+sexo+edad+horas de sueño+ansiedad crónica+depresión crónica: Modelo_5=Modelo_5_3 #Modelo si se elimina la edad: Modelo_5_sin_1<-glm(formula = DIAG_SUMA_RECOD ~ SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_5_sin_1) #Modelo si se elimina el sexo: Modelo_5_sin_2<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_5_sin_2) #Modelo si se eliminan las horas de sueño: Modelo_5_sin_3<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+ANSI_CRO+DEPRE_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_5_sin_3) #Test RV. (Imagen 4.25) anova(Modelo_5, Modelo_5_sin_1, Modelo_5_sin_2, Modelo_5_sin_3, test="Chisq") #No debe salir ninguna variable. #Paso 6. Han entrado la edad, el sexo, las horas de sueño, la ansiedad crónica y la depresión crónica. Ajuste de los nuevos modelos. Modelo_6_1<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_E STUD_GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) summary(Modelo_6_1) Modelo_6_2<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO+TMUNI_A_D+TMUNI_B_D+TMUNI_C_D+TMUNI_D_D, family = binomial(logit), data = DatosGlobales) summary(Modelo_6_2) #Test RV. (Imagen 4.26) anova(Modelo_5, Modelo_6_1, Modelo_6_2, test="Chisq") #Entra en bloque el nivel de estudios. Nos quedamos con el modelo que incluye constante+sexo+edad+horas de sueño+ansiedad crónica+depresión crónica+nivel de estudios: Modelo_6=Modelo_6_1 #Modelo si se elimina la edad: Modelo_6_sin_1<-glm(formula = DIAG_SUMA_RECOD ~ SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_ESTUD_ GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) summary(Modelo_6_sin_1) #Modelo si se elimina el sexo: Modelo_6_sin_2<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO+NIV_ESTUD_GRUPOS_B_C+NIV_ESTUD_GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) summary(Modelo_6_sin_2) #Modelo si se eliminan las horas de sueño: Modelo_6_sin_3<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+ANSI_CRO+DEPRE_CRO+NIV_ESTUD_GRUPOS_B_C+NIV_ESTUD_GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) summary(Modelo_6_sin_3) #Modelo si se elimina la ansiedad: Modelo_6_sin_4<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+DEPRE_CRO+NIV_ESTUD_GRUPOS_B_C+NIV_ESTUD_GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) summary(Modelo_6_sin_4) #Test RV. (Imagen 4.27) anova(Modelo_6, Modelo_6_sin_1, Modelo_6_sin_2, Modelo_6_sin_3, Modelo_6_sin_4, test="Chisq") #No debe salir ninguna variable. #Paso 7. Han entrado la edad, el sexo, las horas de sueño, la ansiedad crónica, la depresión crónica y el nivel de estudios en bloque. Modelo_7_1<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_E STUD_GRUPOS_C_C+TMUNI_A_D+TMUNI_B_D+TMUNI_C_D+TMUNI_D_D, family = binomial(logit), data = DatosGlobales) summary(Modelo_7_1) #Test RV: (Imagen 4.28) anova(Modelo_6, Modelo_7_1, test="Chisq") #El tamaño del municipio NO debe entrar en el modelo. Modelo_7=Modelo_6 #Paso 8. Se prueban las interacciones sexo*ansiedad crónica y sexo*depresión crónica sugeridas por la literatura. Modelo_8_1<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_E STUD_GRUPOS_C_C+SEXO*ANSI_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_8_1) Modelo_8_2<-glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_E STUD_GRUPOS_C_C+SEXO*DEPRE_CRO, family = binomial(logit), data = DatosGlobales) summary(Modelo_8_2) #Test RV. (Imagen 4.29) anova(Modelo_7, Modelo_8_1, Modelo_8_2, test="Chisq") Modelo_8=Modelo_7 #Paso 9. Contraste con el modelo saturado. (Imagen 4.30) Modelo=glm(formula = DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_E STUD_GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) Modelo_Saturado<-glm(formula = DIAG_SUMA_RECOD ~ EDAD*SEXO*H_SUEÑO_2BLOQUES*ANSI_CRO*DEPRE_CRO*NIV_ESTUD_GRUPOS_A_C*NIV_ESTUD_GRUPOS_B_C*NIV_EST UD_GRUPOS_C_C, family = binomial(logit), data = DatosGlobales) 94 anova(Modelo,Modelo_Saturado,test="Chisq") #MODELO FINAL PARA LA PRESENCIA DE DCD. (Imagen 4.31) Modelo=Modelo_8 summary(Modelo) ############################### #APARTADO 4.3.3.2: Parámetros del modelo. #Intervalos de confianza mediante RV para las b. (Imagen 4.32) library(MASS) Int_Conf_95_b<-confint(Modelo_8) #Intervalos para las OR. (Imagen 4.33) Int_Conf_95_OR<-exp(Int_Conf_95_b) #Cálculo de OR (Tabla 4.34) exp(coef(summary(Modelo))) ############################### Apartado 4.3.3.3: Bondad de ajuste. #Se define la función que realiza el test de Hosmer y Lemeshow hosmerlem <function (y, yhat, g = 10) { cutyhat <- cut(yhat, breaks = quantile(yhat, probs = seq(0, 1, 1/g)), include.lowest = T) obs <- xtabs(cbind(1 - y, y) ~ cutyhat) expect <- xtabs(cbind(1 - yhat, yhat) ~ cutyhat) chisq <- sum((obs - expect)^2/expect) P <- 1 - pchisq(chisq, g - 2) c("X^2" = chisq, Df = g - 2, "P(>Chi)" = P) } #Test de H-L. (Imagen 4.35) y<-DatosGlobales$DIAG_SUMA_RECOD yhat<-predict(Modelo_8, type="response", se=T) hosmerlem(y, yhat$fit, 10) #Se define la función que calcula la tasa de clasificaciones correctas yajus=fitted.values(Modelo) y<-DatosGlobales$DIAG_SUMA_RECOD tcc<-function(corte,yajus,y) { verpos<-table(yajus>corte & y==1)[2] falpos<-table(yajus>corte & y==0)[2] falneg<-table(yajus<corte & y==1)[2] verneg<-table(yajus<corte & y==0)[2] tasa<-(verpos+verneg)/(verpos+falpos+falneg+verneg)*100 tasa } #Se calcula la tasa para distintos puntos de corte: (Imagen 4.36) tcc(0.1,yajus,y) tcc(0.2,yajus,y) tcc(0.3,yajus,y) tcc(0.4,yajus,y) tcc(0.5,yajus,y) tcc(0.6,yajus,y) tcc(0.7,yajus,y) tcc(0.8,yajus,y) tcc(0.9,yajus,y) #Alrededor de 0.5 están los mejores resultados. Intentamos afinar más: (Imagen 4.36) tcc(0.45,yajus,y) tcc(0.46,yajus,y) tcc(0.47,yajus,y) tcc(0.48,yajus,y) tcc(0.49,yajus,y) tcc(0.5,yajus,y) tcc(0.51,yajus,y) tcc(0.52,yajus,y) tcc(0.53,yajus,y) tcc(0.54,yajus,y) tcc(0.55,yajus,y) #El mejor punto de corte es 0.5 #Area bajo la curva ROC. (Imagen 4.37) #Cargar librería "Design" a<-lrm(DIAG_SUMA_RECOD ~ EDAD+SEXO+H_SUEÑO_2BLOQUES+ANSI_CRO+DEPRE_CRO+NIV_ESTUD_GRUPOS_A_C+NIV_ESTUD_GRUPOS_B_C+NIV_E STUD_GRUPOS_C_C, data = DatosGlobales) a ############################### #Apartado 4.3.3.4: Validación y diagnósis. #Identificar residuos mayores que 2. (Imagen 4.38) res<-abs(residuals(Modelo)) table(res>2) #Calculamos las distancias de Cook. (Imagen 4.39) cook<-cooks.distance(Modelo) max(cook) 95 96 Bibliografía. 1. McCullagh P, Nelder J. Generalized linear models. 2nd ed. Chapman and Hall/CRC; 1983. ISBN:0412317605 / 978-0412317606. 2. Agresti A. Categorical data analisys. 2ª ed. Wiley-Interscience; 2002. ISBN:0471360937, 978-0471360933. 3. Página web oficial del proyecto R. [Internet]Institute for Statistics and Mathematics of the WU Wien.; c2011 [cited 2011 09/10]. Available from: http://www.r-project.org/. 4. Instituto Nacional de Estadística (INE). Encuesta de discapacidad, autonomía personal y situaciones de dependencia. INE 2008 2008;1. 5. Alschuler KN, Theisen-Goodvich ME, Haig AJ, Geisser ME. A comparison of the relationship between depression, perceived disability, and physical performance in persons with chronic pain. Eur J Pain 2008 8;12(6):757-64. 6. Arnstein P, Caudill M, Mandle CL, Norris A, Beasley R. Self efficacy as a mediator of the relationship between pain intensity, disability and depression in chronic pain patients. Pain 1999 4/1;80(3):483-91. 7. Astin M, Lawton D, Hirst M. The prevalence of pain in a disabled population. Soc Sci Med 1996 6;42(11):1457-64. 8. Selvin S. Statistical analysis of epidemiological data. 2ª ed. Oxford University Press, USA; 1996. ISBN:0195097602, 978-0195097603. 9. Agresti A. Multivariate analysis: Discrete variables (overview). In: Editors-in-Chief: Neil J. Smelser, Paul B. Baltes, editors. International encyclopedia of the social & behavioral sciences. Oxford: Pergamon; 2001. 10. Lober DJ, Green DP. NIMBY or NIABY: A logit model of opposition to solid-waste-disposal facility siting. J Environ Manage 1994 1;40(1):33-50. 11. T. Florian J. Categorical data analysis: Away from ANOVAs (transformation or not) and towards logit mixed models. Journal of Memory and Language 2008 11;59(4):434-46. 12. Naoya S. Non-linear logit models for high-frequency data analysis. Physica A: Statistical Mechanics and its Applications 2005 9/1;355(1):183-9. 13. Pai C, Saleh W. Modelling motorcyclist injury severity by various crash types at T-junctions in the UK. Saf Sci 2008 10;46(8):1234-47. 14. Sarma S, Simpson W. A panel multinomial logit analysis of elderly living arrangements: Evidence from aging in manitoba longitudinal data, canada. Soc Sci Med 2007 12;65(12):2539-52. 15. Janssens GK, van Dam PA, van Goethem MLA, Buytaert P. A logit model to evaluate the performance of diagnosis of solid palpable breast tumours. European Journal of Obstetrics & Gynecology and Reproductive Biology 1990 2;34(1-2):157-65. 16. Byung-Ryang K. A logit analysis of hospital choice behavior in chollabukdo province of korea. Soc Sci Med 1990;30(10):1119-29. 17. Taylor SM, Frank J, White NF, Myers J. Modelling the incidence of childhood diarrhea. Soc Sci Med 1986;23(10):995-1002. 18. Failde I, Ramos I, Fernandez-Palacin F, Gonzalez-Pinto A. Women, mental health and health-related quality of life in coronary patients. Women Health 2006;43(2):35-49. 19. Hosmer DW, Lemeshow S. Applied logistic regression. 2, ilustrada ed. John Wiley and Sons; 1989. ISBN:0471356328, 9780471356325. 20. Kleinbaum DG, Klein M, Pryor ER. Logistic regression. A self-learning text. 3ª ed. New York: Springer; 1994. ISBN:1441917411, 9781441917416. 21. Silva Aycaguer L, Barroso Utra I. Regresión logística. 1ª ed. La Muralla.; 2004. ISBN:847133738X. 97 22. Vı́lchez JA, Montiel H, Casal J, Arnaldos J. Analytical expressions for the calculation of damage percentage using the probit methodology. J Loss Prev Process Ind 2001;14(3):193-7. 23. Alsakka R, ap Gwilym O. A random effects ordered probit model for rating migrations. Finance Research Letters 2010 9;7(3):140-7. 24. Lemp JD, Kockelman KM, Unnikrishnan A. Analysis of large truck crash severity using heteroskedastic ordered probit models. Accident Analysis & Prevention 2011 1;43(1):370-80. 25. Chen G, Hamori S. Bivariate probit analysis of differences between male and female formal employment in urban china. Journal of Asian Economics 2010 10;21(5):494-501. 26. Nkamleu GB, Adesina AA. Determinants of chemical input use in peri-urban lowland systems: Bivariate probit analysis in cameroon. Agricultural Systems 2000 2;63(2):111-21. 27. Simon S. Comparison of probit expressions for the prediction of lethality due to toxic exposure. J Loss Prev Process Ind 1995;8(4):197-204. 28. Millie DF, Mark Hersh C. Statistical characterizations of the atrazine-induced photosynthetic inhibition of cyclotella meneghiniana (bacillariophyta). Aquatic Toxicology 1987 7;10(4):239-49. 29. Hong W, Meier PG, Deininger RA. Estimation of a single probit line from multiple toxicity test data. Aquatic Toxicology 1988 3;12(3):193-202. 30. R.F. G. The use of probit expressions in the assessment of acute population impact of toxic releases. J Loss Prev Process Ind 1991 1;4(1):49-57. 31. Bliss CI. The method of probits. Science 79 (2037); 1934. DOI:10.1126/science.79.2037.38. 32. Finney DJ. Probit analysis. 3ª ed. Cambridge University Press, Cambridge, UK.; 1971. ISBN:052108041X. 33. Steinbrecher G, Shaw WT. Quantile mechanics. European Journal of Applied Mathematics 19 (2); 2008. DOI:10.1017/S0956792508007341. 34. Aguilera A. Modelos de respuesta discreta: Asignatura modelización y predicción estocásticas. 1ª ed. Aguilera; 2002. 35. Suits D. Use of dummies variables in regression equations. Journal of the American Statistical Association 1957;52 (280):548-51. 36. Schoenfeld D. Analysis of categorical data: Logistic model. statistics in medical research. New York: Mike V, Staley KE 1982:433-54. 37. Silva L. Excursión a la regresión logística en ciencias de la salud. Madrid: Díaz Santos 1994:3-11. 38. Albert A, Anderson J. On the existence of maximum likelihood estimates in logistic regression models. Biometrika 1984;71:1-10. 39. Christmann A, Rousseeuw P. Measuring overlap in logistic regression. Comput Stat Data Anal 2001;37:6575. 40. Tjalling J. Historical development of the newton-raphson method. 1995;SIAM Review 37 (4):531-51. 41. Venables W, Ripley B. Modern applied statistics with S. 4th ed. New York: Springer; 2002. ISBN:0-38795457-0, 2002. 42. Caballero F. Modelos de regresión logística. Sociedad Andaluza De Enfermedades Infecciosas [Internet]. [revised 2010 22/12/10;Available from http://saei.org/hemero/epidemiol/nota4.html. 43. De Irala-Estévez J, Martínez-González M. Variables modificadoras de efecto. Barcelona: Editorial Ariel S.A.; 2004. 44. De Irala J, Martínez-González M, Guillén-Grima F. ¿Qué es una variable de confusión? Med Clin (Barc) 2001;117:377-85. 45. Molinero L. Asociación de variables cualitativas nominales y ordinales. Asociación De La Sociedad Española De Hipertensión [Internet]. [revisado 2004] Available from http://www.seh- lelha.org/asociacion.htm. 98 46. Cook R, Weisberg S. Residuals and influence in regression. 8th ed. London: Chapman and Hall, New York; 1982. DOI:10.1002/bimj.4710270110. 47. Arriaza Gómez AJ, Fernández Palacín F, López Sánchez MA, Muñoz Márquez M, Pérez Plaza S, Sánchez Navas A. Estadística básica con R y R-commander. 1ª ed. Cádiz: Servicio de Publicaciones de la Universidad de Cádiz; 2008. ISBN:978-84-9828-186-6. 48. Yates F. Contingency tables involving small numbers and the chi-square test. Journal of the Royal Statistical Society;Ser. B, Supp.:217-35. 49. John M. Chambers. Graphical methods for data analysis. 1st ed. Universidad de Michigan: Wadsworth International Group; 1983. ISBN:053498052X, 9780534980528. 50. Thompson L. S-PLUS (and R) manual to accompany Agresti’s categorical data analysis. 2ª ed. John Wiley and Sons; 2007. 51. Breivik H, Collett B, Ventafridda V, Cohen R, Gallacher D. Survey of chronic pain in europe: Prevalence, impact on daily life, and treatment. Eur J Pain 2006 May;10(4):287-333. 52. Bastida JL, Oliva J. Los costes sociales del dolor. II Reunión Nacional Dolor y Sociedad. El Dolor y la Dependencia 2009:p.161-70. 53. Mantyselka P, Kumpusalo E, Ahonen R, Kumpusalo A, Kauhanen J, Viinamaki H, Halonen P, Takala J. Pain as a reason to visit the doctor: A study in finnish primary health care. Pain 2001 Jan;89(2-3):175-80. 54. Leveille SG, Bean J, Ngo L, McMullen W, Guralnik JM. The pathway from musculoskeletal pain to mobility difficulty in older disabled women. Pain 2007 3;128(1-2):69-77. 55. Valderrama-Gama E, Damian J, Ruigomez A, Martin-Moreno JM. Chronic disease, functional status, and self-ascribed causes of disabilities among noninstitutionalized older people in spain. J Gerontol A Biol Sci Med Sci 2002 Nov;57(11):M716-21. 56. Escobar Bravo MA, Puga D, Martin M. Protective effects of social networks on disability among older adults in madrid and barcelona, spain, in 2005]. Rev Esp Salud Publica 2008 Nov-Dec;82(6):637-51. 57. Ehde DM, Jensen MP, Engel JM, Turner JA, Hoffman AJ, Cardenas DD. Chronic pain secondary to disability: A review. Clin J Pain 2003 Jan-Feb;19(1):3-17. 58. Scott KM, Von Korff M, Alonso J, Angermeyer MC, Bromet E, Fayyad J, de Girolamo G, Demyttenaere K, Gasquet I, Gureje O, et al. Mental-physical co-morbidity and its relationship with disability: Results from the world mental health surveys. Psychol Med 2009 Jan;39(1):33-43. 59. Pinto-Meza A, Fernandez A, Fullana MA, Haro JM, Palao D, Luciano JV, Serrano-Blanco A. Impact of mental disorders and chronic physical conditions in health-related quality of life among primary care patients: Results from an epidemiological study. Qual Life Res 2009 Oct;18(8):1011-8. 60. Ohayon MM. Relationship between chronic painful physical condition and insomnia. J Psychiatr Res 2005 3;39(2):151-9. 61. Frank AO, De Souza LH, Frank CA. Neck pain and disability: A cross-sectional survey of the demographic and clinical characteristics of neck pain seen in a rheumatology clinic. Int J Clin Pract 2005 Feb;59(2):17382. 62. Encuesta sobre Discapacidad, Autonomía personal y Situaciones de Dependencia (EDAD). Metodología. [Internet]Madrid: Instituto Nacional de Estadística (INE). Available from: http://www.ine.es/metodologia/t15/t1530418.pdf. 63. Nihayah M, Ismarulyusda I, Syarif HL, Zakiah MSN, Baharudin O, Fadzil MH. Sleeping hours and academic achievements: A study among biomedical science students. Procedia - Social and Behavioral Sciences 2011;18:617-21. 64. Kachikis AB, Breitkopf CR. Predictors of sleep characteristics among women in southeast texas. Womens Health Issues 2011 Aug 27. 99 65. Página web oficial del Instituto Nacional de Estadística [Internet]Madrid; c2011 [cited 2011 09/08]. Available from: http://www.ine.es/. 66. Mueser KT, Pratt SI, Bartels SJ, Forester B, Wolfe R, Cather C. Neurocognition and social skill in older persons with schizophrenia and major mood disorders: An analysis of gender and diagnosis effects. J Neurolinguistics 2010 May;23(3):297-317. 67. Xu Y, Schneier F, Heimberg RG, Princisvalle K, Liebowitz MR, Wang S, Blanco C. Gender differences in social anxiety disorder: Results from the national epidemiologic sample on alcohol and related conditions. J Anxiety Disord 2011 Aug 17. 68. Molendijk ML, Bus BA, Spinhoven P, Penninx BW, Prickaerts J, Oude Voshaar RC, Elzinga BM. Gender specific associations of serum levels of brain-derived neurotrophic factor in anxiety. World J Biol Psychiatry 2011 Sep 5. 69. Monteggia LM, Luikart B, Barrot M, Theobold D, Malkovska I, Nef S, Parada LF, Nestler EJ. Brain-derived neurotrophic factor conditional knockouts show gender differences in depression-related behaviors. Biol Psychiatry 2007 Jan 15;61(2):187-97. 70. Keogh E, McCracken LM, Eccleston C. Gender moderates the association between depression and disability in chronic pain patients. Eur J Pain 2006 Jul;10(5):413-22. 71. Simpson EH. The interpretation of interaction in contingency tables. Journal of the Royal Statistical Society 1951;B 13:238-41. 72. Aguilera AM. Modelización de tablas de contingencia multidimensionales. 1ª ed. Madrid: La muralla; 2006. ISBN:9788471337603. 73. Tu Y-. Statistical paradoxes. In: Editors-in-Chief: Penelope Peterson A2Eva Baker and Barry McGawA2 Editors-in-Chief: Penelope Peterson,Eva Baker, Barry McGaw, editors. International encyclopedia of education (third edition). Oxford: Elsevier; 2010. 74. Douglas L. H. Simpson's paradox and the analysis of memory retrieval. Psychol Rev 1980 7;87(4):398-410. 75. Dardanoni V, Modica S, Pennisi A. The simpson paradox of school grading in italy. Research in Economics 2009 6;63(2):91-4. 76. C.Ineke N. The potential for simpson's paradox in drug utilization studies. Ann Epidemiol 1997 10;7(7):51721. 77. Smith K, O'Day J. Simpson's paradox: An example using accident data from the state of texas. Accident Analysis & Prevention 1982 4;14(2):131-3. 78. Català E, Reig E, Artés M, Aliaga L, López JS, Segú JL. Prevalence of pain in the spanish population: Telephone survey in 5000 homes. Eur J Pain 2002 4;6(2):133-40. 79. Stubbs D, Krebs E, Bair M, Damush T, Wu J, Sutherland J, Kroenke K. Sex differences in pain and painrelated disability among primary care patients with chronic musculoskeletal pain. Pain Med 2010 Feb;11(2):232-9. 100 101