Trabajo de investigación realizado por: Alejandro Salazar Couso

Anuncio
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 
Descargar