Está en la página 1de 142

Formación IMIBIC

INTRODUCCIÓN
A LA
BIOESTADÍSTICA
CON R
MARINA MORA ORTIZ
ALMUDENA PINO ÁNGELES
FERNANDO A. JIMÉNEZ
AUTORÍA

Marina Mora Ortiz


Almudena Pino Ángeles
Fernando A. Jiménez

EDITA

UCOPress
Editorial de la Universidad
de Córdoba

ISBN: 978-84-9927-665-6 This project has received funding from


the European Union’s Horizon 2020
Año: 2022
research and innovation programme
under the Marie Skłodowska-Curie
grant agreement No 847468.
IMIBIC
Edificio IMIBIC
Hospital Universitario Reina Sofía Disclaimer. This book reflects only the authors' views. The
Avda. Menéndez Pidal s/n Research Executive Agency is not responsible for any use
14004 Córdoba - SPAIN that may be made of the information it contains.
Introducción de la Bioestadística con R

Índice.

Sección 1: ¿Por qué aprender R? _______________________________________ Página 1

Sección 2: R, una súper calculadora ______________________________ Página 3

Sección 3: R, un lenguaje de programación _________________________ Página 9

Sección 4: Estadísticas descriptivas y gráficos básicos _______________ Página 37

Sección 5: Comparando dos grupos: t-Test y Wilconxon’s Rank Sum Test __ Página 61

Sección 6: ANOVA y Kruskal-Wallis _______________________________ Página 75

Sección 7: Correlaciones _______________________________________ Página 97

Sección 8: Modelos lineares ____________________________________ Página 107

Sección 9: Introducción a los “power analysis” _____________________ Página 113

Sección 10: Gráficos en R ______________________________________ Página 121

Referencias __________________________________________________ Página 135


Introducción a la Bioestadística con R

Sección 1: ¿Por qué aprender R?

Conceptos clave.

• R es un programa estadístico gratuito, y RStudio su IDE (acrónimo inglés que se


traduce como Entorno de Desarrollo Integrado) que nos facilita la interacción con
el programa.
• R contiene por defecto utilidades básicas que pueden mejorarse añadiendo
“paquetes”, que son extensiones de R donde se han recopilado códigos, datos y
documentación en un formato predeterminado para desarrollar análisis
estadísticos especializados.
• La mayoría de los paquetes de interés pueden encontrarse en CRAN (https://
cran.r-project.org) y Bioconductor (https://bioconductor.org).
• Algunas plataformas gratuitas útiles para aprender R son Quick-R (https://
www.statmethods.net) y STHDA (http://www.sthda.com/english/).

En primer lugar, bienvenido a este curso introductorio de R. Si estás aquí posiblemente te estes
preguntando si merece la pena o no invertir tu tiempo y esfuerzo en aprender R. Cuando estaba al
comienzo de mi doctorado una compañera de oficina mucho más senior que yo y con un gran
dominio de este programa me recomendó aprender R porque aportaba mucho valor a tu CV.
Seguí su consejo y hoy en día R es mi software estadístico de preferencia y el cual uso para la
mayoría de los análisis que hago. Mi antigua compañera llegó a ser la directora del departamento
de genética en el que trabajábamos, de una institución líder en su campo en Reino Unido, mucho
antes de cumplir los 40. Lo que quiero decir con esto es que R ayuda.

Pero… ¿por qué aprender R? Pues hay varios motivos. Es un software gratis y libre, líder
indiscutible en Bioestadística, gracias a una gran comunidad de usuarios a nivel mundial. Al no
depender de una licencia de pago para usar R, esta herramienta irá contigo durante tu carrera
investigadora, de manera que podrás hacer prácticamente cualquier análisis o encontrar respuesta
a cualquier duda a través de los múltiples paquetes y foros de usuarios que hay disponibles en
internet. Si tu campo evoluciona, o decides ampliar tu radio de acción, seguramente no tengas
ningún problema en encontrar una solución a tus necesidades analíticas empleando R. Otros
programas muy competentes, como SAS, SPSS, Matlab, Stata, son soluciones de pago y
ninguno tiene actualmente tantos recursos como R. A esto hay que sumarle que muchas
instituciones ya no mantienen sus licencias. Durante mi licenciatura aprendí Matlab y SPSS, y en
alguna de las instituciones en las que he trabajado no podía usarlos ya que no estaban
disponibles.

¿Cuáles son las dificultades de R? En primer lugar, en R se utiliza una consola para
comunicarnos con el programa mediante instrucciones denominadas comandos. Como
alternativa, podemos instalar una IDE que tiene algunos botones donde puedes ejecutar acciones
básicas (subir y bajar archivos, seleccionar tu directorio de trabajo, etc.) pero que es básicamente
una interfaz basada en líneas de comandos y no una verdadera GUI (Graphical User Interface o
Interfaz Gráfica de Usuario) como sí puede ser por ejemplo la de SPSS. Si siempre has usado
programas con GUIs, trabajar con comandos tiene una pequeña curva de aprendizaje y
adaptación, pero se va haciendo cada vez más fácil tras adquirir unos conocimientos básicos y

1
Introducción a la Bioestadística con R

con la práctica. En resumidas cuentas, puedes instalarte R solamente, o R y RStudio. Te


recomiendo la segunda opción ya que RStudio facilita el uso de R haciéndolo más intuitivo.

Por otro lado, R es un programa ‘a la carta’, de manera que cada persona lo configura y
aprende según sus propias necesidades analíticas. Además de las utilidades básicas, hay
muchísimos recursos en R en forma de ‘paquetes’, que son extensiones de R donde usuarios
muy avanzados han compilado códigos, datos y documentación en un formato predeterminado
para que otros usuarios lo puedan instalar y utilizar. Estos paquetes se encuentran en repositorios
como CRAN (https://cran.r-project.org) y Bioconductor (https://bioconductor.org), que es más
específico para bioestadística. Normalmente estos paquetes se han desarrollado por grupos de
bioinformáticos de diferentes universidades o centros de investigación con financiación pública, de
manera que el lanzamiento del paquete suele ir acompañado de una publicación que lo presenta
(¡recuerda citarlo si lo utilizas!).

Aprender a usar R es un trabajo muy personal porque, aunque hay mucha documentación
disponible, eres tú quien determina qué necesitas saber y cómo configurar tu propia ruta de
aprendizaje buscando tutoriales, libros, ayuda en foros, cursos, etc., hasta que ves que tus
necesidades están cubiertas. Este camino puede ser un poco tedioso, pero al mismo tiempo te
permitirá avanzar mucho en tu trabajo de investigación. Algunos recursos online que he
encontrado útiles son Quick-R (https://www.statmethods.net) que está muy bien organizado y es
útil en los niveles iniciales y STHDA (http://www.sthda.com/english/), que es interesante sobre todo
para “High-throughput data analysis”.

Para terminar quiero resaltar la sistemática detrás del procesado de datos en R. Mientras que
en muchos paquetes estadísticos como SPSS los análisis están prescritos, y el usuario
simplemente necesita seleccionar las casillas de su interés y extraer los resultados del extenso
reporte que se genera, en R el proceso es completamente diferente. En vez de realizar todos los
análisis de una vez, el usuario desarrolla su protocolo de manera muy personalizada interactuando
con el programa. Es decir, ejecutas un comando, por ejemplo, un modelo estadístico, y en base a
los resultados ejecutas el segundo comando que en este caso podrían ser los gráficos de
diagnóstico. Considerando esos resultados en su conjunto entonces avanzas otro paso mas y
diseñas una validación cruzada, y así sucesivamente. A esto en inglés se le llama ‘pipeline’ (que
traducido al español significaría tubería u oleoducto), porque el resultado de un paso se convierte
en el material necesario para ejecutar el siguiente. Si bien este proceso es más laborioso que la
mera selección de casillas en un software con GUI, también es cierto que te permite tener mayor
control y requiere un conocimiento más profundo de la estadística que estás empleando ya que
tienes que familiarizarte a fondo por ejemplo con los supuestos que se asumen en cada modelo y
el tipo de control de calidad que es necesario emplear.

En resumen, aprender R te permitirá desarrollar los análisis bioestadísticos más avanzados en


tu campo, comprender mejor tus datos y tener mayor control sobre las estadísticas empleadas. ¡Y
puede llegar a ser adictivo!

En este curso vamos a aprender los conceptos básicos de R y los modelos más comunes en
bioestadística. En la siguiente sección veremos cómo instalar R y cómo este programa en realidad
es una especie de súper calculadora.

2
Introducción a la Bioestadística con R

Sección 2: R, una súper calculadora.

Conceptos clave.

• Para trabajar con R es necesario instalar R, y opcionalmente también RStudio.


RStudio facilita mucho la interacción con el programa y recomendamos su uso.
• El entorno de RStudio está subdividido en cuatro secciones: 1) el editor de
códigos, 2) la consola, 3) el espacio de trabajo y el historial y 4) sección de
gráficos, archivos y otros.
• En toda actividad informática el orden es importante, vamos a aprender
como configurar tu directorio de trabajo.
• R es en cierto modo una súper calculadora, vamos a ejecutar algunos
cálculos básicos en la consola para familiarizarnos con el entorno.

Instalación del programa.


En esta sección vamos a instalar R y RStudio.

Ejercicio 1.
Descargar e instalar R y RStudio. Elige la opción 1 o 2 dependiendo de tu sistema operativo.

Opción 1. Usuarios de Mac:

1. Abre un navegador de Internet y dirígete a www.r-project.org.


2. En la sección “Introducción” , haz clic en el enlace que dice "descargar R".
3. Selecciona una ubicación CRAN (un sitio espejo) cualquiera y haz clic en el enlace
correspondiente.
4. Haz clic en el enlace "Descargar R para (Mac) OS X" en la parte superior de la página.
5. Haz clic en el archivo que contiene la última versión de R en la sección de “Archivos".
Descarga el archivo .pkg
6. Haz doble clic en el archivo .pkg que has descargado y sigue las instrucciones de
instalación.
7. Ahora que R está instalado, vamos a descargar e instalar RStudio.

Para instalar RStudio:

8. Dirígete a www.rstudio.com y haz clic en el botón "Descargar RStudio".


9. Haz clic en "Descargar RStudio Desktop” (versión gratuita de RStudio).
10. Haz clic en la versión recomendada para tu sistema, o en la última versión de Mac.
Guarda el archivo .dmg
11. Haz doble clic en el archivo .dmg para abrirlo y luego arrástralo a la carpeta de
aplicaciones.
12. Ya has instalado RStudio.

3
Introducción a la Bioestadística con R

Opción 2. Usuarios de Windows:

1. Abre un navegador de Internet y dirígete a www.r-project.org.


2. Haz clic en el enlace "descargar R" en el medio de la página de "Introducción".
3. Selecciona una ubicación CRAN (un sitio espejo) y haz clic en el enlace correspondiente.
4. Haz clic en el enlace "Descargar R para Windows" en la parte superior de la página.
5. Haz clic en el enlace "instalar R por primera vez" en la parte superior de la página.
6. Haz clic en "Descargar R para Windows" y guarda el archivo ejecutable en algún lugar de
tu ordenador.
7. Ejecuta el archivo .exe y siga las instrucciones de instalación.

Para instalar RStudio:

8. Dirígete a www.rstudio.com y haz clic en el botón "Descargar RStudio".


9. Haz clic en "Descargar RStudio Desktop".
10. Haz clic en la versión recomendada para tu sistema, o la última versión de Windows, y
guarda el archivo ejecutable.
11. Ejecuta el archivo .exe y sigue las instrucciones de instalación.

NOTA: Si tuvieras algún problema con la instalación, recuerda que siempre puedes recurrir al
servicio de informática del IMIBIC it@imibic.org.

La apariencia de R.
¡Muy bien! Ya estamos listos para empezar. A continuación, vamos a familiarizarnos con los
conceptos básicos de R. Abre RStudio. Lo que ves en la pantalla es el espacio de trabajo de
RStudio, que está subdividido en cuatro secciones:

4
Introducción a la Bioestadística con R

1) El editor de códigos.
En esta sección se generan los archivos que contienen un código R o se ejecuta un código
elaborado previamente. Los formatos más populares para editar códigos son R Script y R
Notebook. R Notebook es más versátil pues te permite combinar códigos y texto plano. El poder
introducir texto es muy útil ya que te permite anotar el proceso que se está desarrollando, y
escribir instrucciones e información sobre el mismo que puede ser leída por cualquier persona,
ayudándole a entender dicho código en cualquier momento. En los ejercicios de este curso
vamos a usar R Notebooks. Para crear una nueva hoja de comandos o un notebook dirígete a la
barra de herramientas en la parte superior izquierda y selecciona “New File → R Script / R
Notebook”.

Si ya tienes un notebook, sólo tienes que hacer doble clic sobre él y se abrirá automáticamente
en el editor de códigos. Por ahora, no necesitas hacer ninguna de estas dos acciones, ni crear un
nuevo notebook ni abrir uno preexistente, pero está bien saber dónde lo vamos a encontrar en el
futuro.

2) La consola.
Se usa para escribir y ejecutar comandos en R directamente. Es muy útil para probar que
ciertos comandos funcionan como tu quieres antes de incluirlos en tu notebook.

3) El espacio de trabajo y el historial.


En esta sección puedes ver tus archivos y modelos. El historial muestra todos los códigos que
has utilizado. También se utiliza para subir archivos de manera interactiva si prefieres no usar para
ello la línea de comandos. Aunque su uso no es tan frecuente, también tienes la opción de buscar
tutoriales directamente desde aquí.

5
Introducción a la Bioestadística con R

4) Gráficos, archivos y mas.


Aquí se muestra el directorio de archivos de tu ordenador, desde donde subes o bajas
documentos al programa. En las distintas pestañas de esta sección podemos además visualizar
gráficos, ver qué paquetes están activos, encontrar ayuda para el uso de esos paquetes y
visualizar tablas.

Preparándonos para empezar.


Cuando trabajamos con herramientas informáticas es muy importante ser ordenados. Antes de
empezar, una vez abierto RStudio, vamos a configurar nuestro directorio de trabajo. Básicamente
esta es la carpeta de tu ordenador en la que están los datos, y a donde R va a ir a buscarlos cada
vez que los necesite. Cuando tengas resultados que exportar, se guardarán ahí automáticamente.
Puedes hacerlo usando la línea de comandos en la consola o tu editor de códigos: setwd(“~/
Desktop/YourFolder") o bien seleccionando en la ventana de RStudio “Session → Set Working
Directory → Choose Directory …”

Puedes crear una carpeta de referencia para probar los siguientes pasos de este tutorial y
llamarla R1.

R es en definitiva una súper calculadora.


En esta sección vamos a ver cómo R es en resumidas cuentas una súper calculadora, y
vamos a ejecutar unos cálculos básicos. Este es el segundo y último ejercicio previos al inicio del
curso.

6
Introducción a la Bioestadística con R

Ejercicio 2. Operaciones aritméticas básicas.

(1) Las operaciones aritméticas básicas de R son:


Suma (+)
Resta (-)
Multiplicación (*)
División (/)
Exponenciación (^)

Puedes ejecutar estos comandos directamente en la consola o haciendo click en la flechita


verde que está en cada sección de comandos.

(2) Las funciones aritméticas básicas de R son:


(2.1) Logaritmos y exponenciales.
log2(x) # Logaritmo base 2 de x
log10(x) # Logaritmo base 10 de x
exp(x) # Exponential de x

7
Introducción a la Bioestadística con R

(2.2) Funciones trigonométricas.

cos(x) # Coseno de x
acos(x) # arcocoseno de x
sin(x) # Seno de x
asin(x) # arcoseno de x
tan(x) # Tangente de x
atan(x) # arcotangente de x

(3) Otras funciones matemáticas.

abs (x) # valor absoluto de x


sqrt (x) # raíz cuadrada de x

8
Introducción a la Bioestadística con R

Sección 3: R, un lenguaje de programación.

Conceptos clave.

• R es un lenguaje de programación interpretado, que ejecuta códigos


directamente sin necesidad de una compilación previa.

• La programación de R está orientada a objetos, que son los elementos con los
que trabaja. Los objetos pueden tener diferentes categorías (un vector, un valor
numérico, una función, etc).

R, a parte de funcionar como una súper calculadora, también es un lenguaje de programación


interpretado, esto quiere decir que ejecuta los códigos directamente sin que sea necesaria una
compilación del programa, es decir, no es necesario traducir un programa en lenguaje de alto nivel
a lenguaje de la máquina. El entorno (un sistema coherente y totalmente planificado) de R es
normalmente utilizado para programar estadísticas y gráficas, ya que dispone de un amplio
repertorio en parte facilitado por la naturaleza de entorno de software libre (licencia GNU GLP) que
ha propiciado que una gran cantidad de usuarios en todo el mundo colaboren en su desarrollo de
manera continua.

En esta sección vamos a ver conceptos básicos sobre la programación en R, esenciales para
iniciarnos en el uso de este programa. Estos conceptos se irán ampliando poco a poco a lo largo
del curso.

Las variables en R y como asignarles un valor.


Una variable en estadística es una característica que se ha anotado para su estudio en una
muestra o población y que puede adoptar distintos valores. Las variables se clasifican en
cuantitativas, que son las que se expresan numéricamente, y cualitativas, que son las variables
que se expresan usando nombres. Las variables cuantitativas se clasifican a su vez en continuas
cuando existe un valor infinito de valores potenciales que puede tomar entre un intervalo de datos,
y discretas, cuando existe un número finito de valores entre un intervalo de datos. A su vez, las
variables cualitativas pueden clasificarse en variables ordinales, para las que existe un nivel u
orden que las clasifica, y nominales, cuando lo que se anota es una palabra claramente
diferenciada. En la tabla que se presenta debajo puedes ver algunos ejemplos. En Matlab, las
palabras hay que codificarlas con números, pero R tiene la ventaja de admitir directamente texto
en sus variables.

9
Introducción a la Bioestadística con R

Variable Subcategoría Definición Ejemplo


Puede adquirir un nº infinito
El peso o la altura de un
Continua de valores dentro de un
individuo
intervalo
Cuantitativa
Puede adquirir un nº finito
El nº de visitas que recibe
Discreta de valores dentro de un
un centro de salud
intervalo

Clasificación que hace


Expresa distintos órdenes o
Ordinal niveles
referencia a la severidad de
una enfermedad
Cualitativa
Expresa un nombre o Una característica anotada,
Nominal p a l a b r a c l a r a m e n t e por ejemplo, el color de los
diferenciado ojos

A continuación, vamos a ver un ejercicio en el que se ve cómo almacenar una variable en R. A


lo largo del curso veremos muchos más ejemplos. Para hacer el ejercicio puedes ejecutar el
Notebook directamente (R Notebook Ejercicio 3), escribir los comandos en tu consola, o incluso
crear tu propio Notebook (“File → New File → R Notebook”).
Para crear una nueva variable se debe usar el operador de asignación <-. Éste operador nos
permitirá almacenar una variable bajo un nombre específico. También es posible usar =, pero es
menos común.

Ejercicio 3. Asignación de valores a variables.

(1) Crear nuevas variables.

Los nombres no pueden contener espacios, por lo tanto, debes usar algún tipo de símbolo
para cubrir ese espacio. En este caso estamos usando la barra baja: _.

Para imprimir el nombre de tu objeto (personas_cardiopatías), simplemente escribe el nombre y


R devolverá el valor que le hemos asignado. R utiliza una programación orientada a objetos, donde
un objeto es un término bastante genérico que hace referencia a cualquier elemento que estés
usando (un vector, una función, una base de datos…). Estos objetos a su vez tendrán diferentes
categorías y es necesario entenderlos bien para hacer un uso eficiente de R. Una función hará
cosas diferentes según el tipo de objeto que recibe como material de trabajo, por ejemplo, la

10
Introducción a la Bioestadística con R

función anova producirá diferentes resultados según la base de datos (el objeto) que se le dé
como argumento.

(2) Efectúa operaciones con tus datos.

R ya ha guardado el objeto personas_cardiopatías (nuestra variable) en su memoria, y ya es


posible hacer operaciones con él. Imagínate que tu subgrupo de personas con cardiopatías
pertenece a una población total que fue dividida en tres subgrupos con el mismo número de
individuos para hacer un experimento. Y ahora quieres calcular el número total de personas con
cardiopatías en tu población.

El siguiente código de R crea dos variables que almacenan el peso (kg) y la altura (m) de una
persona. Estas dos variables se utilizarán a continuación para calcular el índice de masa corporal
(IMC = peso del individuo / la altura del individuo ^ 2).

Ahora puedes usar la función ls( ) para ver todos los objetos que has creado.

11
Introducción a la Bioestadística con R

Estos objetos están almacenados en tu espacio de trabajo (el cuadrante superior derecho de
tu RStudio. Como puedes ver hay bastante material, resultado de los ejercicios que hemos hecho
para aprender algunas funciones básicas. Ahora vamos a eliminarlos con la función rm( ), de
manera que al hacer ls( ) de nuevo veremos que nuestro espacio de trabajo está limpio.

Tipos de datos básicos y cómo importar tablas de datos.


Ya sabemos cómo asignar valores a las variables. Ahora vamos a ver qué tipos de datos hay y
cómo importar bases de datos en R. Para ello, puedes seguir el ejercicio 4 desde este manual o
abrir el ‘R Notebook Ejercicio 4’ y ejecutarlo.

Ejercicio 4. Tipos de datos.

(1) Principales tipos de datos.

Hay tres tipos principales de datos: numéricos, texto y objetos lógicos. Ejecuta la siguiente
sección para ver algunos ejemplos.

12
Introducción a la Bioestadística con R

(2) Cómo saber la clase de tu objeto.

Hay dos maneras de saber la clase de tu objeto, usando la función class( ) o interrogando
directamente si es el tipo de objeto que tú crees. Vamos a ver ambas opciones.

Como podemos ver, los objetos son de clase numérica, carácter y lógica respectivamente.
Ahora vamos a ver la otra forma de interrogar los objetos. Para ello puedes usar las funciones:
is.numeric(), is.character(), is.logical(). Ahora queremos saber qué objetos son numéricos, así que
vamos a interrogar a nuestros tres objetos con esa función.

Como puedes ver por el resultado, “glucosa_ayunas” sí es numérico, sin embargo, los otros
dos objetos no lo son. Ahora puedes ver por ti mismo qué ocurre si utilizas las funciones
is.character() y is.logical().

13
Introducción a la Bioestadística con R

(3) Cómo cambiar el tipo de clase de un objeto.

Para cambiar el tipo de clase de un objeto deberás usar las funciones as.numeric(),
as.character(), as.logical(), etc. Mira el ejemplo que se muestra a continuación:

Las comillas nos indican que en el segundo caso R está leyendo texto, y no entiende que ahí
haya un número.

(4) Cómo importar una base de datos.

Finalmente, vamos a ver rápidamente cómo subir una base de datos en Excel, en vez de datos
individuales. Para ello tienes dos alternativas. Puedes hacerlo de manera muy intuitiva usando el
espacio de trabajo de R, el panel arriba a la derecha, donde debes seleccionar “Environment →
From Excel… → Browse → “

Alternativamente puedes usar un script como se indica debajo, pero recuerda que estamos en
el Working Directory R1 como indicamos con anterioridad, por lo que en este ejemplo, el archivo
de Excel debe estar en ese mismo directorio.

14
Introducción a la Bioestadística con R

Vectores.
La combinación de varios valores (numéricos, lógicos, etc.) en un mismo objeto produce un
vector. Dependiendo de la categoría los vectores serán numéricos, lógicos, etc. Un vector, en
cierto modo, es una “mini tabla”. En el siguiente ejercicio vamos a ver cómo crear un vector, qué
ocurre con los valores perdidos, como seleccionar una sección del vector, y finalmente cómo
hacer cálculos con los vectores.

Ejercicio 5. Vectores.

Como hasta ahora, puedes hacer el ejercicio siguiendo este manual o usando el “R Notebook
Ejercicio 5”.

(1) Como crear un vector.

Para crear un vector vamos a usar la función c( ). Esta función proviene de la palabra
concatenar, porque al fin y al cabo un vector es la concatenación de varios valores.

A continuación, vamos a crear un vector de caracteres para almacenar el código de los


pacientes.

15
Introducción a la Bioestadística con R

Ahora vamos a clasificar si estos pacientes están en siguiendo un tratamiento (TRUE), o si por
el contrario están recibiendo un placebo.

Para conocer la longitud del vector (cuantos elementos hay) usaremos la función length().

Finalmente, vamos a añadir nombres a los vectores. Hay dos formas de hacerlo:

16
Introducción a la Bioestadística con R

(2) Vectores con valores perdidos.

Hay ocasiones en las que cierta información, por ejemplo “ha padecido un evento cardiaco en
los últimos 6 meses’, está disponible sólo para algunos individuos y no para otros. A esto se le
llama valor perdido y en la notación de R se representa como NA. ¡Ojo!, no es lo mismo un valor
perdido que 0. En el caso de 0, tenemos la certeza de que nuestro paciente no ha tenido ningún
evento cardiaco en los últimos seis meses en el caso de nuestro ejemplo.

Usando la función is.na() podrás interrogar un vector y ver cuántos valores perdidos hay.

Es importante saber si existen eventos perdidos o no porque ciertas funciones y modelos sólo
trabajan con casos completos, es decir, no pueden aceptar NAs en sus vectores. Es muy común
en esas situaciones eliminar los valores perdidos (en nuestro caso a los pacientes 1003 y 1004) o
imputarlos. Qué opción tomar dependerá principalmente de qué es lo más aceptado en tu campo
de investigación.

Por último, hay que señalar que NA y NaN no es lo mismo. NA es un valor perdido, y NaN
significa “Not a Number” (no es un número). R produce esta notación cuando una función
matemática no puede funcionar correctamente, por ejemplo, 0/0 = NaN. Es importante saber que
la función is.na() va a contabilizar tanto los NA como los NaN. Si quieres saber específicamente
cuántos NaN hay, debes usar la función is.nan().

(3) Seleccionar un subconjunto de un vector.

A continuación vamos a ver las tres maneras principales que hay de seleccionar un
subconjunto de un vector. Estas son usando un índice positivo, un índice negativo y usando un
vector de tipo lógico.

17
Introducción a la Bioestadística con R

18
Introducción a la Bioestadística con R

Otros operadores lógicos disponibles en R son:

Menor que (<)


Mayor que (>)
Menor o igual que (<=)
Mayor o igual que (>=)
Iguales entre sí (==)
Diferentes entre sí (!=)

Finalmente, vamos a ver cómo hacer cálculos con vectores. Los vectores son objetos de R
que pueden ser utilizados para calcular operaciones. Los operadores aritméticos básicos, así
como las funciones aritméticas descritas previamente pueden usarse aquí. En este caso, la
operación se aplicará a cada elemento del vector. Vamos a ver algunos ejemplos a continuación.

19
Introducción a la Bioestadística con R

Como puedes ver por los resultados, cada operación se ejecuta sobre cada elemento de
manera individualizada. Aunque estudiaremos las estadísticas descriptivas de manera más
detallada en el siguiente capítulo, ahora vamos a ver cómo ejecutar algunos análisis estadísticos
sobre estos datos de manera preliminar.

Ya hemos visto los conceptos básicos sobre los vectores. A continuación, estudiaremos las
matrices.

Matrices.
A continuación vamos a estudiar cómo trabajar con matrices en R. Una matriz es básicamente
una combinación de vectores que tiene varias columnas (verticales) y varias filas (horizontales).
Una matriz es en realidad como una hoja de Excel que contiene varias filas y columnas. Las filas
suelen ser o bien individuos o muestras tomadas de dichos individuos, mientras que las columnas
suelen ser las variables que se han anotado, por ejemplo, el peso de los individuos, sus niveles
de glucosa, insulina, etc. Puede haber sin embargo excepciones. En la investigación con
microbiota, las filas albergan variables (nuestras medidas de abundancia para cada especie
bacteriana) y las columnas los individuos a los que se les ha hecho dicha medición. En resumidas
cuentas, las matrices las usaremos para almacenar nuestros datos en R.

20
Introducción a la Bioestadística con R

Ejercicio 6. Matrices.

Vamos a ver cómo crear y manipular matrices. Anteriormente hemos visto cómo subir un
archivo de Excel, que sería la manera habitual de importar tus datos (un científico no debería
inventárselos como vamos a hacer nosotros a continuación), sin embargo, es necesario aprender
algunos conceptos básicos sobre como manipular la matriz. De otro modo, vas a tener grandes
dificultades para manipular los datos, y acabarías arreglándolos en Excel e importando nuevas
versiones constantemente.

(1) Como crear y nombrar (o renombre) una matriz, y sus elementos.

En primer lugar, vamos a crear varios vectores (col1, col2, col3), y luego vamos a combinarlos.
Para ello se pueden usar las funciones cbind() o rbind(). Los nombres de las filas que se obtienen
([1,]) se generan por defecto. Es la manera con la que R indica que se trata de la fila 1 y todas sus
columnas asociadas, en este caso, el paciente 1 y todas las mediciones que se le han realizado.
Sin embargo, sería mejor que las filas tuvieran nombres, por ejemplo, el código del paciente.
Podemos utilizar las funciones rownames() o colnames() para cambiar los nombres de las
columnas.

21
Introducción a la Bioestadística con R

(2) Operaciones con matrices.

Hay varias operaciones básicas que pueden realizarse con una matriz, por ejemplo, calcular
sus dimensiones o trasponerla.

(3) Seleccionar un subconjunto de la matriz.

Igual que en el caso anterior, podemos hacer una selección basada en un índice positivo, en
un índice negativo, en base a los nombres que se han dado a las columnas y/o filas, y haciendo
una selección de tipo lógico. Estas funciones son muy importantes para el manejo básico de R, y
las encontrarás muy útiles en el trabajo diario.

En R, cada celda está definida por la posición en la fila y en la columna, es como jugar a Hundir
la flota. Las posiciones se indican entre corchetes y se separan por una coma, por ejemplo, la
celda que está en la fila 1, columna 2, se selecciona como [1,2]. Si queremos seleccionar una fila
entera, entonces omitiremos el valor de la columna que se dejará en blanco y R entiende que nos
estamos refiriendo a todos los valores de esa fila (por ejemplo, [1,]). De la misma manera, se
selecciona una columna entera, omitiremos el valor de la fila en la selección.

22
Introducción a la Bioestadística con R

23
Introducción a la Bioestadística con R

(4) Cálculos con matrices.

También es posible hacer cálculos con tu matriz, de este modo R aplicará una función a todos
los elementos de la matriz.

24
Introducción a la Bioestadística con R

La función apply() también te permitirá aplicar cualquier función estadística a tu matriz. La


fórmula general es la siguiente: apply(X, MARGIN, FUN), donde X es tu matriz, MARGIN son los
valores que puedes usar (1 para filas y 2 para columnas) y FUN la función estadística que quieres
utilizar. Ahora vamos a ver el ejemplo anterior usando apply().

25
Introducción a la Bioestadística con R

Con esto ya hemos aprendido un manejo básico de las matrices. En el siguiente ejercicio nos
familiarizaremos con los factores.

Factores.
Los factores son variables independientes que representan categorías o grupos en tus datos.
En este ejercicio vamos a ver cómo crear un factor. En nuestro ejemplo vamos a suponer que se
están comparando un tratamiento contra el cáncer novedoso contra otro tradicional. Es decir,
nuestro factor tiene dos niveles. En R, es posible investigar los niveles usando esta función:
levels().

Ejercicio 7. Factores.

(1) Cómo crear factores, renombrarlos y cambiar su identidad.

En este ejercicio se comparan un tratamiento del cáncer tradicional (1) con otro tratamiento aún
en fase experimental (2).

R organiza los resultados de manera alfanumérica por defecto.

26
Introducción a la Bioestadística con R

Imaginemos que queremos renombrar el tratamiento 1, que es el tratamiento tradicional, como


“Tratamiento clásico”, y al tratamiento 2 como “Tratamiento avanzado”. En este caso, R coloca
automáticamente el tratamiento 2 en primer lugar porque la “A” va antes que la “C” en el alfabeto.
Vemos ahora cómo evitar ese problema.

Habitualmente se importa la base de datos desde Excel, los datos no se introducen de manera
manual. Sin embargo, en ciertas ocasiones R puede no entender bien que una columna o vector
se trata en realidad de un factor, y podría a llegar a clasificarla de otra manera (por ejemplo, como
una variable numérica). Ahora vamos a ver cómo interrogar una variable para ver si es un factor y
corregirlo si no es así.

Como puedes ver por el resultado de esta sección, la variable cancer_tto sí era un factor, y la
respuesta de R ha sido "TRUE" (VERDADERO). Sin embargo, la variable evento_cardiaco no era
un factor, la respuesta de R ha sido "FALSE" (FALSO). Al usar la función as.factor() podemos hacer
que aunque no sea un factor, R lo trate como tal y en el resultado nos indica incluso los niveles
que ha detectado. También puedes crear una nueva variable donde se almacene como factor de
manera permanente evento_cardiaco_factor <- as.factor(evento_cardiaco).

Para conocer el numero de niveles de un factor se puede usar la función summary(). Intenta ver
que salida obtienes aplicando summary() al factor cancer_tto.

27
Introducción a la Bioestadística con R

(2) Cálculos con factores.

(3) Cómo crear una tabla.

La función table() puede crear una tabla de contingencia o frecuencia con tus datos. Vamos a
ver cómo.

28
Introducción a la Bioestadística con R

Tablas.
Las tablas de datos (data frames en inglés) son otra categoría de objetos en R. Son parecidos a
una matriz pero tienen estructura, es decir, sus columnas pueden ser numéricas, lógicas,
categóricas, etc. Y las filas suelen ser los individuos a los cuales se les han anotado las variables
previamente mencionadas. En R habitualmente trabajaremos con data frames más que con
matrices o vectores independientes. A continuación, vamos a ver cómo crear un data frame.

Ejercicio 8. Tablas de datos.

(1) Crear una tabla de datos.

29
Introducción a la Bioestadística con R

La función is.data.frame() nos da información sobre si nuestros datos son una tabla de datos o
no. Vamos a comprobar que tipo de resultado nos da la función is.data.frame() cuando los
aplicamos sobre la tabla que acabamos de crear y cuando la aplicamos a la matriz que creamos
en el ejercicio 6.

Como puedes ver, en el primer caso la respuesta es TRUE, el objeto cancer_tto_df es una
tabla de datos, sin embargo, la matriz que creamos en el ejercicio 6 no lo es. Ahora vamos a ver
cómo transformar la matriz en una tabla de datos.

NOTA: las tablas de datos pueden transponerse de la misma manera que las matrices.

(2) Selección de un subconjunto de una tabla de datos.

De la misma forma que hemos visto anteriormente, las tablas de datos pueden ser subdivididas
usando las opciones:
- Indice positivo
- Índice negativo
- Índice basado en alguna característica

Vamos a ver algunos ejemplos sobre su práctica:

30
Introducción a la Bioestadística con R

31
Introducción a la Bioestadística con R

Una manera de simplificar el acceso a las diferentes variables de una tabla de datos es adjuntar
esa tabla de datos (data frame) al espacio de R, de modo que R conoce el camino para encontrar
las variables a las que te refieres y no necesitas especificárselo usando el símbolo del dólar ($).

32
Introducción a la Bioestadística con R

(3) Cómo ampliar una base de datos.

Parte de la manipulación de las bases de datos puede implicar añadirle variables o unirla con
otra base de datos. Imaginemos que los eventos cardíacos se referían a los mismos individuos y
los datos se introdujeron en el mismo orden. Vamos a añadir esa columna a la tabla de datos
cancer_tto_df.

La función bind() hace el mismo proceso. Vamos a usarla para añadir el peso expresado en
gramos.

(4) Cálculos con tablas de datos.

Una tabla de datos numérica se puede usar de la misma manera que una matriz para
efectuar cálculos usando las funciones rowSums(), colSums(), colMeans(), rowMeans() y
apply() como hemos visto previamente.

33
Introducción a la Bioestadística con R

Listas.
La última parte de este capítulo son las listas. Una lista es una colección ordenada de cualquier
tipo de objeto de R (por ejemplo, vectores, matrices, etc). Muy brevemente, vamos a ver en el
ejercicio 9 cómo crear una lista, seleccionar un conjunto de la lista o extenderla.

Ejercicio 9. Asignación de valores a variables.

(1) Crea una lista.

34
Introducción a la Bioestadística con R

(2) Selecciona elementos de tu lista.

(3) Ampliar una lista.

35
Introducción a la Bioestadística con R

Sección 4: Estadísticas descriptivas y gráficos básicos.

Conceptos clave.

• La estadística puede clasificarse en dos tipos, descriptiva e inferencial. La estadística


descriptiva es la metodología que se emplea para caracterizar un conjunto de datos.
Sin embargo, no podemos extraer conclusiones debido a la variabilidad de las
muestras. La estadística inferencial complementa a la descriptiva permitiendo sacar
conclusiones extrapolables a la población gracias al empleo de métodos
probabilísticos.

• Algunos estadísticos descriptivos básicos son la media, la mediana y la moda. La media


representa la distribución equitativa de los datos si la suma total se repartiera por
igual. La mediana es el valor central si todos los datos se ordenan de menor a mayor,
y la moda es el valor que más se repite en nuestra base de datos.

• El rango, el valor máximo y mínimo, la variabilidad y la desviación estándar son algunas


de las medidas que se usan más habitualmente para describir la variabilidad de la
muestra. El rango se usa para conocer la cobertura de nuestros datos, siendo la
medida del esparcimiento entre el valor máximo y mínimo de nuestra muestra. Se ve
muy afectado por los valores máximos y mínimos; una forma de paliar este problema
es usando el rango intercuartil, resultado de dividir los datos en cuatro fracciones de
igual tamaño.

• Finalmente, la varianza representa la desviación cuadrática promedio de la media. La


desviación estándar es la raíz cuadrada de la varianza.

Empezaremos esta sección por decir que R tiene una serie de bases de datos disponibles
para usarlas como ejemplos y aprender las distintas funciones del programa. Las más conocidas
son i) mtcars, sobre motores y coches; ii) iris (sobre las medidas de los sépalos, pétalos y otras
características de los lirios); iii) ToothGrowth, que contiene resultados sobre un estudio con
vitamina C en el crecimiento de los dientes de 60 conejillos de indias; iv) PlantGrowth, sobre la
producción de un cultivo con dos tratamientos distintos; y v) USArrests sobre estadísticas
criminales en Estados Unidos. Para cargar los datos de una de estas bases de datos en tu sesión
de R y visualizarlos puedes usar los siguientes comandos:

37
Introducción a la Bioestadística con R

Ejercicio 10. Estadísticas básica con R.

Este es un ejercicio con comandos explicados y sus soluciones. Una parte del ejercicio es
guiada.

(1) Calcular la media, la mediana y la moda de una variable.

En esta sección vamos a trabajar con la variable “len” que nos indica la longitud del diente. En
primer lugar, carga los datos de ToothGrowth usando la función data(), ya que se encuentran
disponibles en R. La función head() nos permitirá visualizar una sección de esos datos para
hacernos una idea de la distribución de los mismos. A continuación veremos en la opción 1 como
calcular la media con la función mean(), la mediana con median() y la moda usando un paquete.
Para esto instalaremos por primera vez un paquete en R, el paquete “modeest”.

A la hora de instalar un paquete, como es el caso del paquete “modeest” necesario para
calcular la moda, hay dos opciones:

• Si instalas un paquete en R desde el Notebook debes usar:


install.packages("modeest")
require(modeest) #sería lo mismo si lo ejecutaras en un super ordenador.

• Si lo instalas desde la consola debes usar:


install.packages("modeest")
library(modeest)

38
Introducción a la Bioestadística con R

Veremos a continuación cómo calcular otros estadísticos descriptivos usando las funciones
summary() y fivenum(). Por defecto, summary() va a devolverte la información sobre el mínimo valor,
el primer cuartil, la mediana, la media, el tercer cuartil y el máximo. La función fivenum() no anota
los resultados como sí lo hace summary(), y debes conocer que te da la información del resumen
de 5 número de Tukey: mínimo, bisagra inferior, mediana, bisagra superior, y el máximo.

(2) Paquetes para calcular estadísticas descriptivas.

Algunos paquetes para calcular estadísticas descriptivas son Hmisc, pastecs y psych. A
continuación, vamos a ver un ejemplo con cada uno de ellos. En primer lugar, instala y carga los
paquetes como hemos visto anteriormente usando las funciones install.packages(“x”) y library(x)
(donde x es el nombre de del paquete).

39
Introducción a la Bioestadística con R

(3) Cálculos de estadísticas descriptivas por grupos.

En muchos casos el investigador tendrá interés en calcular las estadísticas descriptivas por
grupo, sobre todo cuando se ha aplicado un tratamiento y hay factores. Hay ciertas funciones que
pueden ayudarte en esa tarea. Vamos a estudiar cómo calcularlo usando la librería psych y la
librería doBy. Psych ya está instalado, pero tienes que asegurarte de que está cargado en tu
espacio. No hemos usado doBy antes, por lo que tendremos que instalarlo y cargarlo.

Vamos a usar la función describeBy (x, group = y), donde x es nuestra variable (en este caso
“len”, la longitud de los dientes), e “y” es el factor que queremos explorar. En este casi queremos
ver la dosis (escrito como “dose” en la base de datos).

40
Introducción a la Bioestadística con R

El paquete doBy es un poco más complejo. Debemos especificar cuál es nuestra base de
datos y qué función queremos aplicar, en este caso, la media (mean). Utiliza la siguiente fórmula:

summary_by (Tus_datos, x ~ y, id = NULL, FUN= mean, keep.names = TRUE, p2d = FALSE,


order = TRUE)

En el caso de querer usar más de una función a la vez, es posible escribiendo una lista según
el siguiente ejemplo:

FUN = function (x) { c(m = mean, sd = sd(x) ) }

41
Introducción a la Bioestadística con R

(4) Gráficos básicos.

Hay una serie de paquetes de R que nos permiten hacer gráficos, entre los cuales ggplot2 y
ggpubr son de los más populares. Vamos a hacer algunos gráficos sencillos usando ggpubr.
También aprenderemos como subdividir una imagen en diferentes paneles, y cómo añadir títulos a
nuestros gráficos.

Ahora vamos a combinar diferentes paneles en R. El comando par() nos permite dividir la
imagen en cuatro paneles, dos filas y dos columnas. Vamos a generar un histograma, un boxplot,
un Q-Q plot (que se usa durante el análisis descriptivo para ver si los datos están distribuidos de
manera normal) y un barplot.

42
Introducción a la Bioestadística con R

Figura 1: Gráfico multipanel resultado de ejecutar la segunda sección del código superior.

Del mismo modo que se pueden calcular las estadísticas descriptivas por grupo, también se
pueden hacer los gráficos por grupo. En el siguiente apartado veremos un ejemplo y también
como añadirle color a los gráficos.

43
Introducción a la Bioestadística con R

44
Introducción a la Bioestadística con R

El libro "R Graphics Cookbook" contiene muchos comandos para configurar todos los detalles de
tus gráficos. Puedes encontrar más información aquí: http://www.cookbook-r.com/Graphs/
También es muy útil seguir tutoriales online en los que se especifique cómo conseguir graficos que
sean útiles para ti.

Tablas de frecuencia.
Las tablas de contingencia o de frecuencia se utilizan para describir las variables categóricas, en
ellas estará anotado el recuento para cada combinación de niveles de factores. A continuación,
vamos a ver cómo realizar estadísticos descriptivos con las tablas de frecuencia y su
representación gráfica. LA base de datos que vamos a utilizar forma parte de un paquete de R
(dentro de Bioconductor) denominado `ALL` que tiene datos de pacientes con leucemia
linfoblastica aguda.

45
Introducción a la Bioestadística con R

Ejercicio 11. Tablas de frecuencia.

En primer lugar, instala el paquete “All” de Bioconductor como hemos visto anteriormente, carga
los datos y visualiza una sección. La base de datos acumula información sobre pacientes con
leucemia linfoblástica aguda. Podemos realizar la instalación con uno de los dos siguiente
comandos: BiocManager::install(“ALL”) o install.packages(“ALL”), seguido de library(ALL), data(ALL).

46
Introducción a la Bioestadística con R

Como podemos ver, tenemos una variedad interesante de datos y de clases que podemos
analizar en este ejercicio, incluyendo una cantidad considerable de valores perdidos, que
podemos decidir tener en cuenta o no, como veremos más adelante.

(2) Tablas de frecuencia absoluta con la función “table”.

Las tablas de contingencia o de frecuencia se utilizan para describir las variables categóricas,
en ellas estará anotado el recuento para cada combinación de niveles de factores. A continuación
vamos a ver cómo realizar estadísticos descriptivos con las tablas de frecuencia y su
representación gráfica.

47
Introducción a la Bioestadística con R

(2.1) Tablas de frecuencia marginal (o de una vía).

Las tablas de una vía nos van a devolver una tabla de frecuencias de la variable que queramos
analizar, por ejemplo el sexo:

(2.2) Tablas de frecuencia de dos vías.

En este caso, podemos interrogar los datos para qué nos proporcione la información que
queremos, por ejemplo, la frecuencia de remisiones por sexo.

(2.3) Tablas de tres entradas.

Imaginemos ahora que quisiéramos utilizar una tercera variable para interrogar los datos, y que
ademas de querer saber cuántas mujeres (F) han tenido una remisión completa (CR) siempre que
hayan recibido un transplante de medula ósea.

48
Introducción a la Bioestadística con R

Otra forma de realizar estas tablas de frecuencia de 3 vías es con la función “ftable”, del
paquete “stats”, que nos devuelve una tabla algo más estética:

¿Y si queremos incluir los valores perdidos en nuestra tabla?

49
Introducción a la Bioestadística con R

(2.4) Guardado de las tablas.

Las tablas de contingencia en R no dejan de ser tablas de datos y como tales, se pueden
guardar como un objeto de R o se pueden exportar como un archivo de texto plano. En el
siguiente ejemplo guardamos y exportamos una tabla de dos entradas:

(3) Tablas de frecuencia relativa.

Vamos a utilizar la función “prop.table”. Esta toma como entrada una tabla de frecuencia
absoluta y utiliza por defecto el total de las observaciones para calcular las proporciones.
Esto se puede modificar según nos interese usando el argumento “margin”, como
veremos.

Siguiendo con el mismo conjunto de datos podemos calcular las tablas de frecuencias relativas
de la tabla de dos vías “frec.abs_2w”.

50
Introducción a la Bioestadística con R

Como hemos dicho, “prop.table” usa por defecto el total para calcular las frecuencias, por lo
que la suma de todas ellas dará 1.

(3.1) Frecuencias condicionales.

Si queremos calcular las frecuencias de una columna o de una fila tenemos que calcular las
frecuencias condicionales, y para ello usamos el argumento “margin” igual a 1 para usar las filas e
igual a 2 para usar las columnas:

Como podemos ver, la suma de la columnas ahora da 1.

51
Introducción a la Bioestadística con R

Como vemos, las sumas de las filas ahora da 1.

(4) Frecuencias acumuladas en las tablas de frecuencia relativa o absoluta.

Para calcular las frecuencias acumuladas utilizamos otra función básica de R llamada
“addmargins”.

52
Introducción a la Bioestadística con R

(4.1) En tablas de frecuencias absolutas.

(4.2) En tablas de frecuencias relativas.

Y también podemos expresarlo en porcentajes si multiplicamos la tabla de


frecuencias relativas por 100:

53
Introducción a la Bioestadística con R

¿Qué pasa si no especificamos el argumento “margin”? Si no especificamos este valor, la


función “addmargins” nos calcula las frecuencias acumuladas tanto de filas como de columnas.

(5) Visualización de las tablas de contingencia.

La función mas básica para la representación de este tipo de variables son los diagramas de
barras mediante la función “barplot”, que con los argumentos de “legend” y “col” permiten generar
unos gráficos simples pero útiles a la hora de representarlos.

(5.1) Diagrama de barras.

Para este ejemplo podemos usar la tabla de dos vías que ya tenemos guardada con las
variables de sexo y remisión.

Como la tabla de frecuencias nos mantiene los NA entre “<>”, debemos cambiarlo para que
estos queden reflejados en la gráfica.

54
Introducción a la Bioestadística con R

(5.2) Diagrama de barras agrupadas.

El obtener una barra para cada variable es tan sencillo como introducir el argumento “beside” y
otorgarle el valor “TRUE” (verdadero):

55
Introducción a la Bioestadística con R

56
Introducción a la Bioestadística con R

Medidas de variabilidad.
Finalmente, la última parte de la sección 4 será el estudio de las medidas de variabilidad dentro
del marco de estadísticas descriptivas. En la sección 5 veremos cómo hacer estadísticas
inferenciales para comparar medias teniendo en cuenta la variabilidad de cada grupo. Hay varias
medidas de variabilidad descriptivas que debemos conocer antes de abordar la estadística
inferencial. Por lo tanto, el ejercicio final de este capítulo (estadística descriptiva), será sobre como
calcular medidas de variabilidad con R, conociendo de este modo como de dispersa es nuestra
población.

Ejercicio 12. Medidas de variabilidad de una muestra.

Este es un ejercicio con comandos explicados y soluciones. Una parte del ejercicio es guiada.

(1) Rango, valores mínimos y máximos.

El rango es una medida del esparcimiento de nuestros datos, y se corresponde con el valor de
la diferencia entre el valor máximo y el mínimo de nuestros datos. De este modo podemos
conocer la cobertura de nuestros datos. El rango se verá muy afectado por valores extremos, y
por ello se usa poco. Las funciones que se utilizan en R para estos cálculos son min(), max() y
range().

A continuación calcularemos el mínimo, el máximo y el rango de la variable “len” de nuestra


base de datos ToothGrowth.

(2) Rango intercuartil.

Los cuartiles dividen los datos en 4 partes. El rango intercuartil se abrevia como "IQR" por sus
siglas en inglés, y es el resultado de la diferencia entre el primer y tercer cuartil. El IQR se utiliza en
ciertas ocasiones como alternativa a la desviación estándar, ya que es una medida de la
variabilidad más fiable que el rango, especialmente si se usa en combinación con la mediana.

57
Introducción a la Bioestadística con R

También pueden calcularse otros rangos, por ejemplo:

Para calcular terciles utilizamos un método ligeramente diferente. Usamos la opción “c” que ya
hemos visto con anterioridad y los clasificamos con las etiquetas “Low”, “Medium” y “High”. Para
los análisis Cox y ROC es común dividir nuestros datos en terciles.

58
Introducción a la Bioestadística con R

(3) Varianza y desviación estándar.

La varianza representa la desviación cuadrática promedio de la media. Y a su vez, la desviación


estándar es la raíz cuadrada de la varianza.

Las medidas de la varianza se suelen usar más en estadística inferencial, ya que por sí solas
no permiten tomar conclusiones. En el siguiente capítulo comenzaremos a estudiar la estadística
inferencial.

59
Introducción a la Bioestadística con R

Sección 5: Comparando dos grupos: t-Test y Wilcoxon’s Rank


Sum Test.

Conceptos clave.

• Todas las pruebas estadísticas asumen una serie de condiciones que deben cumplirse
para poder emplear correctamente la prueba en cuestión. Es esencial comprobar que
las condiciones o supuestos se cumplen antes de realizar la prueba, de otro modo las
conclusiones podrían ser completamente erróneas.
• Las pruebas estadísticas suelen dividirse en dos tipos, paramétricas y no paramétricas.
Las primeras asumen una distribución normal de las muestras, sin embargo, las
segundas no exigen dicha condición. Si nuestra base de datos no tiene una
distribución normal, y no es posible normalizarla, siempre podemos recurrir a pruebas
no paramétricas para buscar una solución a nuestro análisis.
• La prueba t es un test paramétrico que se utiliza para evaluar las medidas de dos
grupos mediante pruebas de hipótesis. Hay tres tipos de prueba t: 1) de una muestra,
2) de dos muestras, y 3) de dos muestras pareadas.
• La prueba de Wilcoxon Rank Sum Test (también llamada Mann Whitney Wilcoxon) es la
alternativa no paramétrica al t-test y básicamente compara si dos muestras vienen de
poblaciones equidistribuidas. De este modo, al juntar ambas poblaciones y ordenarlas
de mayor a menor las muestras quedaran intercaladas si proceden de la misma
población. Por ello, a veces se dice que se comparan las medianas, pero el test abarca
mucho más.

Hasta ahora nos hemos centrado en los conceptos básicos del lenguaje de programación de R
y en cómo se calculan las estadísticas descriptivas (media, mediana, moda, varianza, etc.). Pero,
¿qué ocurre si además queremos sacar conclusiones sobre nuestros resultados aparte de
describirlos? Para eso necesitaremos adentrarnos en el área de la estadística inferencial. Todas las
pruebas estadísticas asumen una serie condiciones. Estos supuestos (o assumptions en inglés),
son críticos para la correcta utilización de las pruebas ya que las pruebas son muy sensibles a la
violación de estas condiciones y los resultados obtenidos podrían ser erróneos si no cumplen las
condiciones necesarias. Así pues, en esta sección vamos a cubrir cómo comparar dos grupos
entre sí con poblaciones con una distribución paramétrica usando el t-Test, y no paramétrica
usando el Wilcoxon´s Rank Sum Test, y como ejecutar los análisis previos en R para evaluar si se
cumplen los supuestos en cada caso.

Prueba de hipótesis paramétrica: t-Test.


Debido a su naturaleza, las medidas biológicas están condicionadas a ser variables. Una
primera aproximación al estudio de su variabilidad son las funciones var() y sd() vistas en la
sección anterior. Si además de estimar parámetros descriptivos también queremos dar respuesta
a preguntas concretas. Por ejemplo, ¿diferentes dietas modulan los niveles basales de glucosa?,
o ¿dos tratamientos de cáncer distintos presentan diferencias en la propagación de las
metástasis? es posible que nos interese comparar las medias de estos grupos, pero debido a la
variación asociada, nunca podemos estar completamente seguros de que las diferencias entre
nuestras medias muestrales reflejen a la población real. ¡Pudo haber sido por casualidad!

61
Introducción a la Bioestadística con R

Para resolver este problema, William S. Gosset (11 de junio de 1876 - 16 de octubre de 1937)
desarrolló la prueba t (o t-Test en inglés). La prueba t, también llamada prueba t de Student. Es un
algoritmo que permite analizar las diferencias entre dos medias con tamaños de muestra
pequeños, por ejemplo, dos grupos de pacientes pequeños. William S. Gosset trabajó en la
cervecería Guinness en Dublin como investigador industrial a cargo de los controles de calidad de
la cerveza y es considerado como el primer estadístico “industrial”. La prueba t-Test no lleva su
nombre, como es habitual en el campo, porque Guiness no quería que sus competidores
supieran que estaban usando métodos estadísticos. De ese modo, W.S. Gosset publicó su
prueba en la revista Biometrika en el año 1908 con permiso de su jefe usando un pseudónimo, y
la prueba hoy en día se conoce como student t-Test o simplemente t-Test.

La prueba t supone una distribución normal de las muestras y una varianza homogénea. Esta
prueba permitirá probar si dos muestras son diferentes entre ellas o no. Con el t-Test también se
puede probar si la media de un único grupo es mayor o menor que una media dada (por ejemplo,
¿es la media de edad de tu muestra diferente a la media de edad del país o la región donde se
realizó el muestreo?).

La belleza de la lógica en estadísticas.


Antes de empezar la prueba, vamos a repasar cuales son los cuatro pasos lógicos que
tenemos que plantearnos. De manera contraria sería difícil extraer conclusiones.
1. Define la hipótesis nula (H0): no hay diferencias estadísticas entre tus medias → μ1 = μ2.
Suena como un comienzo un poco pesimista, pero si el experimento ha tenido efecto
entonces rechazaremos la hipótesis nula y aceptaremos la alternativa (H1), es decir, las
medias sí son diferentes entre sí.
2. Selecciona y calcula tu prueba estadística: y esto incluye también realizar los análisis
necesarios para comprobar que los supuestos se cumplen. En este caso vamos a utilizar
la prueba t porque queremos comparar dos medias y contamos con un pequeño número
de muestras. La prueba t te permitirá concluir si las medias de tus dos grupos son
diferentes entre sí teniendo en cuenta la varianza de las muestras.
3. Calcular la probabilidad de significancia: Para ello vamos a evaluar el estadístico de la
prueba y estudiar la probabilidad de obtener un valor absoluto tan alto o mayor que si la
hipótesis nula fuera cierta.
4. Finalmente hay que decidir si se rechaza o no la hipotisis nula: si el valor de la probabilidad
de significancia está por debajo de cierto valor crítico, entonces debemos rechazar la
hipótesis nula y aceptar la alternativa, concluyendo que hay una diferencia estadística
entre tus muestras.

En resumen, se rechazará la hipótesis nula si la probabilidad de significancia (p) es menor que


1 entre 20 posibilidades de cometer el error Tipo I (0.05 o 5%). En otras ocasiones el umbral se
sitúa en 0.01 o 1%.

Recuerda que el error Tipo I es la probabilidad de rechazar la hipótesis nula (y


consecuentemente aceptar la alternativa) cuando la hipótesis nula tenía que ser aceptada. Esto es
considerado un falso positivo. Error de tipo II significa que la hipótesis nula se ha aceptado cuando
tenía que haberse rechazado (también es conocido como un falso negativo).

62
Introducción a la Bioestadística con R

Prueba t de una muestra.

La prueba t de una muestra es un procedimiento estadístico en el que conocemos la media de


la población y queremos comparar nuestra muestra con ella. Ejecutar la prueba t en R es muy
simple, esto se hace usando el comando t.test().

Una prueba t de Student de muestra utiliza los siguientes argumentos:

t.test(y, mu = x, alternative = “…”)

Donde “y” son tus datos, “x” es la media de la población contra la cual quieres comparar, y
“alternative” puede tomar dos valores, “greater” o “less”. El argumento "alternativo" define si la
prueba es de de dos colas o de una cola. Si no se incluye, R realizará una prueba de dos colas
de forma predeterminada. Si especificamos alternativa = "greater", R realizará una prueba de una
cola para comprobar que su conjunto de datos tiene una media mayor que el argumento "mu"
definido. Si desea probar una media más pequeña que el "mu" definido, entonces alternativa =
“less".

Ejercicio 13. T-test de una sola muestra.

La edad media en España se sitúa en los 44 años (actualizado en 2019). La media de tu


muestra se sitúa en 39.5, y quieres saber si es significativamente menor que la media del país. En
primer lugar, hay que comprobar que los supuestos para realizar la prueba t se cumplen. Estos
son:

• En primer lugar, la escala de medición usada con los datos recopilados sigue una escala
continua u ordinal, como las edades o el peso de los individuos.
• En segundo lugar, la muestra debe de haberse recopilado de manera aleatoria de una
porción representativa de la población seleccionada al azar.

63
Introducción a la Bioestadística con R

• El tercer supuesto es que los datos de nuestra muestra siguen una distribución normal.
Esto significa que sus datos al representarse gráficamente siguen una curva de
distribución de datos en forma de campana. En este paso, se puede especificar un nivel
de probabilidad (nivel de significancia, p) como criterio de aceptación previamente. En la
mayoría de los casos, se puede asumir un valor del 5% (0.05) o del 1% (0.01).
• El cuarto supuesto está supeditado al anterior y hace referencia al tamaño de muestra. Se
supone que se ha alcanzado un tamaño de muestra suficientemente grande cuando se
cumple el supuesto tercero, es decir, la distribución de los datos es normal. Si no es así,
se deberá ampliar el tamaño de muestra.
• El quinto y último supuesto es la homogeneidad de la varianza. Existe una varianza
homogénea o igual cuando las desviaciones estándar de las muestras son
aproximadamente iguales. Para ello debemos tener dos muestras, es decir, este supuesto
no es aplicable en nuestro contexto actual que es la prueba t de una cola.

El primer supuesto se cumple en nuestro caso, ya que las edades de los individuos siguen una
escala continua. El segundo supuesto hace referencia a la ética y diseño del experimento, y debe
tenerse en cuenta al inicio del estudio. En nuestro caso, asumiremos que la muestra se ha
recopilado de manera aleatoria. A continuación, vamos a ver cómo calcular con R si nuestra
muestra sigue una distribución normal (el tercer supuesto).

A continuación vamos a ver 3 diferentes métodos para estimar si los datos siguen una
distribución normal.

64
Introducción a la Bioestadística con R

En base a nuestros resultados podemos concluir que la distribución de los datos es normal, ya
que el qqplot() muestra una linealidad más o menos homogénea, el Saphiro-Wilk test ha dado un
resultado mayor a 0.05 (si hubiera sido menor, es decir, significativo, entonces los datos podrían
no haber estado normalmente distribuidos), y la distribución de los datos tiene forma de campana.
No es necesario analizar la normalidad de los datos con los tres métodos a la vez, pero aquí los
hemos usado como excusa para aprender sus comandos.

Ya que la distribución de los datos es normal, no es necesario ampliar el tamaño de muestra


(supuesto 4), y el supuesto 5 (la variabilidad de las muestras es homogénea entre sí) no es
aplicable ya que estamos trabajando con única sola muestra.

Ahora ya podemos ejecutar el t.test.

65
Introducción a la Bioestadística con R

En la función t-test, mu es 44, que es la edad media de la población española en el año 2019.
Usaremos la alternativa “less” porque previamente hemos calculado que la edad media de nuestra
muestra es 39.5 y queremos saber si es significativamente menos que la de la población general.

En conclusión, nuestra muestra es significativamente más joven que la media de la población


en el país. Como puedes ver, hemos invertido más tiempo en comprobar que los supuestos se
cumplen que en ejecutar la prueba en sí misma, pero es esencial que los investigadores sean
rigurosos con

Prueba t de dos muestras.

La prueba t de dos muestras es un procedimiento estadístico en el que queremos comparar


dos muestras entre ellas. Es la prueba t-test mas conocida y utilizada. La prueba t de dos muestras
también se denomina prueba t de muestras independientes o prueba t de muestras no apareadas, ya
que ambos conjuntos de muestras no están relacionados entre sí. Además de asumir la
independencia de los dos conjuntos de muestras, ambos deben estar distribuidos normalmente y
la varianza debe ser homogénea, como se vio anteriormente para la prueba t de una muestra. Por
ejemplo, imagina que alimentas a dos grupos de ratones de la misma cepa con diferentes dietas,
uno tiene 60% Kcal y el otro 10% kcal. Al final del estudio, deberá analizar los resultados
ejecutando una prueba t de dos muestras sin aparear porque estos dos grupos de ratones son
independientes.

Si los dos grupos no son independientes, sino que están relacionados entre sí, entonces
tendremos una prueba t de medidas repetidas o una prueba t de muestras dependientes. Este caso
se conoce mejor como prueba t pareada. En la prueba t pareada, el tamaño de las muestras debe
ser igual. Imagina que estás desarrollando un experimento con diez voluntarios con sobrepeso en
el que tienen que comer una dieta baja en grasas específica durante un mes. Luego, registras sus
pesos nuevamente y comparas estos resultados con sus pesos al comienzo de la dieta. En este
caso, para analizar los resultados, deberá realizar una prueba t pareada de dos muestras porque
ha tomado medidas repetidas en los mismos individuos.

66
Introducción a la Bioestadística con R

(1) Prueba t de dos muestras no apareadas.

Para realizar una prueba t de dos muestras no apareadas, usamos exactamente la misma
función que para una prueba t de una muestra: prueba t. La única diferencia es que no estamos
comparando con una media conocida (usando el argumento "mu = ..."), sino que estamos
comparando la media de una muestra con otra. Por lo tanto, usamos la función t.test de la
siguiente manera:

t.test(y, x, alternative = “…”)

Donde “y” es el primer conjunto de datos, “x” es el segundo y “alternative” será completado con el
argumento =two.sided. También podríamos omitirlo, porque como dijimos anteriormente, R
efectúa por defecto un t-test de dos colas.

Ejercicio 14. T-test de dos muestras.

Veinte ratones del genotipo C3H/HeN se han dividido en dos grupos de manera aleatoria, con
diez ratones cada grupo. El primer grupo recibe una dieta comercial con 60% de Kcal, y el
segundo grupo recibe una dieta con sólo 10% de Kcal. Después de 4 semanas los pesas, y
quieres comparar si los pesos son diferentes entre sí.

A continuación, vamos a comprobar si los supuestos del t-test se cumplen. El supuesto 1 y 2


viene del diseño y ejecución del experimento, y asumimos que se ha hecho correctamente. En el
tercer supuesto debemos analizar la normalidad de nuestros datos.

67
Introducción a la Bioestadística con R

Vemos que los qqplots siguen una distribución normal y el p-value del shapiro-test está por
encima de 0.05, por lo tanto, los datos están normalmente distribuidos. Como ahora tenemos dos
muestras, es importante ver que ambas tengan una distribución de la variabilidad similar.

La homocedasticidad, u homogeneidad de varianzas, considera que la variabilidad es similar


entre los dos grupos que queremos comparar. Existen diferentes pruebas para evaluar la
homocedasticidad, en todos ellos se considera que la variabilidad entre los diferentes grupos no
difiere, y la hipótesis alternativa es que sí difiere. Algunas de las pruebas que pueden medir la
homocedasticidad son el F-test (razón de varianzas), el test de Levene, el test de Bartlett, el test de
Brown-forsyth y el de Fligner-Killeen. Vamos a ver algunos en nuestro presente ejercicio si la
varianza entre ambos grupos es comparable o no, para ello vamos a usar el F-test que es el más
común.

68
Introducción a la Bioestadística con R

El test no encuentra varianzas, el p-value es mayor que 0.05. Ahora ya podemos hacer la
prueba t de dos muestras no apareadas.

(2) Prueba t pareada de dos muestras.

R de forma predeterminada asumirá que sus conjuntos de datos no están emparejados a


menos que se especifique lo contrario, por eso hasta ahora no hemos estado usando ningún
argumento para especificar que nuestros datos anteriores no estaban emparejados. Ejecutar una
prueba t emparejada en R es muy sencillo, sólo tienes que detallar en el comando que los dos
conjuntos de datos están emparejados:
t.test(y, x, paired = TRUE)

Aquí “y” es el primer grupo de datos, “x” es el segundo y como no hemos especificado nada en el
argumento “alternative”, R asume que es de dos colas. El argumento “paired = TRUE” le dice al
programa que nuestras muestras están emparejadas.

69
Introducción a la Bioestadística con R

Ejercicio 15. T-test de dos muestras.

Diez voluntarios con sobrepeso han participado en un estudio de dieta mediterránea durante un
mes. Has anotado su peso antes y después, y los resultados se muestran debajo.

¿Les ayudó la dieta a perder peso? Primero obtenemos sus medias:

Para saber si esa diferencia es estadística debemos hacer un test inferencia, en este caso, un
t-test pareado. Vamos a ver si se cumplen los supuestos. Para saber si esa diferencia es
estadísticamente significativa debemos hacer un test inferencial, en este caso un t-test pareado.
Vamos a ver si se cumplen los supuestos.

70
Introducción a la Bioestadística con R

¿Son las varianzas comparables?

Ahora ya podemos ejecutar la prueba t pareada.

71
Introducción a la Bioestadística con R

Pero, ¿qué ocurre si tus datos no están normalmente distribuidos?

Un truco muy extendido es normalizarlos haciendo un log10(), pero puede que aún así sigan
sin estar normalmente distribuidos. En ese caso deberemos recurrir a una prueba no paramétrica.

Wilcoxon-Mann-Whitney test para muestras no pareadas


Hay diferentes tipos de pruebas no paramétricas, aquí vamos a estudiar el Wilcoxon test. El test
de Wilcoxon-Mann-Whitney es un algoritmo que determina si la localización central de dos
muestras es significativamente diferente entre sí. Como en el caso del t-test, las muestras pueden
estar pareadas o no. Si no especificamos que no están pareadas (las muestras pertenecen al
mismo individuo, pero fueron tomadas en momentos diferentes), R ejecutará el comando por
defecto como si no lo estuvieran pareadas.

La función que vamos a utilizar es la siguiente:

wilcox.test(y, x, paired = FALSE)


wilcox.test (y, x)

Aquí “y” es tu primera muestra o grupo de datos, “x” es el segundo grupo de datos y el
argumentos “paired” especificará que tus dos muestras no están relacionadas entre sí. Si no lo
incluimos, igualmente R asumirá por defecto que no lo están.

Ejercicio 16. Wilcoxon-Mann-Whitney test para dos muestras no pareadas.

Te interesa conocer el contenido en ácido linoleico conjugado de dos marcas de leche


comercialmente disponibles, para decidir cual vas a recomendar en un estudio intervencional
humano que está a punto de comenzar. Los datos son los siguientes:

Tratamiento_A <- c(2.0,5.6,3.2,1.9,9.5,2.3,6.7,6.0,3.5,4.0,8.1,15.9)


Tratamiento_B <- c(2.5,3.5,2.9,2.1,6.9,2.4,4.9,6.6,2.0,2.0,5.8,7.5)

En primer lugar, ejecuta un shapiro.test para ambos tratamientos. Después, analiza la


homocedasticidad de las dos muestras. ¿Están normalmente distribuidos los datos? Veamos los
resultados a continuación.

72
Introducción a la Bioestadística con R

Comprueba si están normalmente distribuidos.

Por lo tanto, como se puede ejecutar un t-test vamos a usar la alternativa que es el Wilcoxon
Signed Rank Test. Ahora tenemos que comprobar que se cumplen los supuestos para analizar
nuestros datos usando un Wilcoxon Signed Rank Test.

• Primer supuesto: Los datos tienen que ser independientes.

• Segundo supuesto: Los datos tienen que ser ordinales o bien continuos pero que se
puedan ordenar de menor a mayor.

• Tercer supuesto: No es necesario que las muestras estén normalmente distribuidas, pero
sí que haya igualdad de varianza entre grupos (homocedasticidad)

Sabemos que los datos son independientes entre sí, y que se pueden ordenar de menor a
mayor ya que se trata de una variable numérica. A continuación vamos a analizar si la varianza es
similar entre grupos.

73
Introducción a la Bioestadística con R

No hay evidencia en contra de la igualdad de las varianzas. Ahora ya podemos ejecutar el


Wilcox Test.

Cuando hay colas, la función wilcox.test() no es capaz de calcular el p-value exacto, por lo que
imprime un pequeño mensaje recordándolo. En nuestro caso la diferencia entre las probabilidades
del Tratamiento A y el Tratamiento B no difieren de forma significativa (p-value = 0.4184).

Del mismo modo, se podría ejecutar un Wilcoxon Rank sum test para muestras pareadas, en ese
caso, habría que indicarlo en el comando de la siguiente manera:

wilcox.test(y, x, paired = TRUE)

74
Introducción a la Bioestadística con R

Sección 6: ANOVA y Kruskal-Wallis.

Conceptos clave.

• La ANOVA tipo I y tipo II nos permiten comparar más de dos grupos entre sí.
• Las principales condiciones que deben cumplirse son homocedasticidad y
normalidad de las muestras. Si los datos no están normalmente distribuidos se
puede intentar una normalización usando una función para ese propósito. Una de las
más comunes sería log10().
• La ANOVA es relativamente resistente a cierto grado de desviación en la normalidad
y la homocedasticidad. Si la varianza no es homogénea, se puede corregir la ANOVA
usando la función Welch.
• Las pruebas Post-Hoc nos permiten identificar qué grupos en particular difieren entre
sí cuando hemos rechazado la hipótesis nula en la ANOVA.
• La prueba Kruskal Wallis equivale a la ANOVA tipo I cuando los datos son no
paramétricos.
• El Pairwise Wilcox Test nos permitirá identificar que grupos difieren entre sí, cuando
rechazamos la hipótesis nula en la prueba Kruskal Wallis.

ANOVA: Análisis de la varianza.

Hasta ahora hemos comparado dos grupos entre sí usando el t-test si estaban normalmente
distribuidos, o el Wilcoxon Rank Sum Test si no lo estaban. El ANOVA o análisis de varianza es un
enfoque matemático que se utiliza para averiguar si existen diferencias entre dos o más grupos
independientes. Mientras que antes con la prueba t tenías que comparar la media de dos grupos
entre ellos (o la media de tu grupo contra una media dada), con la ANOVA puedes comparar más
grupos entre sí, lo que es muy útil para analizar diseños experimentales más complejos.

Hay dos tipos principales de ANOVA, que son la ANOVA tipo I y la ANOVA tipo II. Esto hace
referencia a la cantidad de factores que se pueden incluir en cada modelo. En la ANOVA tipo I
tendremos un solo factor; por ejemplo, imagina que está midiendo el peso corporal de los
voluntarios de acuerdo con la dieta que han recibido. Tu factor será el tipo de dieta y para el
análisis de dicho experimento necesitarás utilizar la ANOVA de tipo I.

Ahora imagina que además de la información dietética, también conoces si fuman o no.
Algunos de tus voluntarios son fumadores, otros son no fumadores y por último hay un tercer
grupo en el que son exfumadores. En este caso tienes dos factores: dieta y relación con el
tabaco. Por lo tanto, deberás utilizar una ANOVA de tipo II para el análisis de este experimento.
Este tipo de diseño es un 4x3, y si quisieras analizarlo usando la prueba t-test, el tipo de error
crecería demasiado y los resultados no serían fiables. Por lo tanto, vamos a estudiar cómo hacerlo
mediante el uso de la ANOVA.

(1) Comprensión de la ANOVA.

Cada vez que ejecutamos una prueba t asumimos un 5%, o un 1%, de posibilidades de
cometer un error. Si necesitas comparar más de una muestra con uno o dos factores utilizando la

75
Introducción a la Bioestadística con R

76
Introducción a la Bioestadística con R

prueba t, el error asumido será preocupante debido al alto número de repeticiones que tendrías
que hacer. Por lo tanto, se necesita una alternativa. La ANOVA es un algoritmo que analiza la
variabilidad de los datos en lugar de comparar directamente las medias de sus muestras. En
resumen, la ANOVA compara la variabilidad entre grupos y la variabilidad dentro del grupo.

El funcionamiento de ANOVA es similar al de la prueba t, pero un poco más complejo. Veamos


los pasos esenciales que se ejecutan en la ANOVA, de este modo podemos ver que no es una
caja negra, si no que cuando lleguemos a ejecutar directamente el comando en el siguiente
ejercicio lo que estamos haciendo en realidad es correr de manera automática una serie de pasos
preestablecidos en R.

1. Primero formulamos la hipótesis nula, como en el caso anterior, nuestra hipótesis nula es que
las medias de los grupos son las mismas. Es decir, que no hay diferencias significativas entre
las medias.
2. Calcular las estadísticas de prueba en ANOVA es bastante complejo. Se llama estadística F y
se calcula en diferentes pasos. Primero calculamos las variabilidades producidas por cada
factor que nos dará las sumas de cuadrados (SS). Estos no se pueden comparar directamente,
por lo tanto, necesitamos calcular la varianza real o los cuadrados medios (MS) debidos a cada
factor. Esto se hace dividiendo cada SS por el número correcto de grados de libertad. ¡Pero
no te preocupes, R hará todo eso por nosotros de manera automática!
3. A continuación tienes que calcular la probabilidad de significancia (p) usando los valores F, sus
diferentes grados de libertad, y las tablas con la correspondencia entre ellos. Aunque puede
hacerse de manera manual, el programa lo hará por nosotros.
4. Finalmente tienes que decidir si rechazas o no la hipótesis nula. Al igual que antes, si tu valor p
es menor que 0.05 (o 0.01, o 0.001, según donde hayas fijado el umbral), podrás rechazar la
hipótesis nula.
5. Prueba post-hoc. La utilizarás al final sólo si sus medias fueron significativamente diferentes y
tienes más de dos niveles por factor. Esta es una prueba adicional que necesitamos para
identificar de dónde provienen estas diferencias si hay más de un nivele en cada factor, por
ejemplo, tres dietas como es nuestro caso (Adaptado de Ennos, 1999).

(2) Condiciones de la ANOVA.

Como en casos anteriores, hay una serie de supuestos que se deben tener en cuenta. A
continuación, te los enumeramos brevemente:

1. Independencia de las muestras: las observaciones deben ser aleatorias y los grupos
(niveles dentro de un mismo factor) deben de ser independientes entre sí.
2. Distribución normal: la variable cuantitativa (Y en nuestros comandos) debe distribuirse de
manera normal en cada grupo. Si no se cumple esta condición, se puede recurrir a la
prueba Kruskal-Wallis, si los datos se distribuyen de una manera no paramétrica ya que si
se usa la ANOVA, los resultados podrían no ser válidos.
3. Homocedasticidad: la varianza debe de ser constante entre grupos. Cuanto menor sea el
tamaño de grupo, más importante será esta condición.

Si el diseño es equilibrado, la ANOVA es bastante resistente a la falta de homocedasticidad y


normalidad, pero si la anomalía es extrema es mejor recurrir a una prueba no paramétrico.

A continuación, vamos a ver un ejercicio sobre cómo hacer una ANOVA de una vía usando
solamente R como asistente en el cálculo.

77
Introducción a la Bioestadística con R

Ejercicio 17. ANOVA unidireccional.

Antes de emplear la ANOVA automática de R, vamos a analizarlo de manera manual usando R


como un mero asistente para el calculo. De ese modo podremos ver que la ANOVA no es una
caja negra, si no que es el resultado de una serie de cálculos que siguen convenios
preestablecidos en la estadística clásica.

78
Introducción a la Bioestadística con R

El valor F calculado es mayor que el F crítico, es por lo tanto posible rechazar la hipótesis nula
con un valor de alpha de 0.05 y concluir que el factor dieta tiene un efecto significativo en el peso
de los voluntarios.

ANOVA en R: función aov().


Ahora que hemos disfrutado de la belleza de hacer una ANOVA a mano, veamos cómo se
haría usando la función aov() de R. El comando que hay que utilizar es muy sencillo:

mi_modelo <- aov(Y∼A)

Donde “Y” es tu variable dependiente, en este caso, el peso, y “A” es tu variable independiente,
es decir, dieta 1, 2, 3, ó 4. Hemos almacenado esta función bajo el nombre “mi_modelo”.

mi_modelo <- aov(Y∼A, data = mis_datos)

Se consideran buenas prácticas específicas cuál es la base de datos que estamos utilizando,
aunque en ocasiones sea suficiente con usar la función attach() al principio, así nos aseguramos
de que el programa no se confunde. Recuerda comprobar la normalidad, homocedasticidad,
independencia, etc.

Para ver los resultados:

summary(mi_modelo)
plot(mi_modelo)

Ejercicio 18. Función aov() en R.

Ahora vamos a estudiar si el tipo de dieta ha tenido efecto en el peso de nuestros voluntarios
usando la función de ANOVA automática de R.

1. En primer lugar, introduce tus datos en R. Por consistencia, los vamos a llamar
Datos_anova.
2. Después de subir los datos adjúntalos usando el comando attach() y comprueba el tipo de
clase de cada variable usando class(). Habrá que corregirlos si no los ha almacenado
correctamente.
3. Finalmente, usa la función aov() y summary() para ver los resultados de tu ANOVA.

79
Introducción a la Bioestadística con R

80
Introducción a la Bioestadística con R

(1) Comprobación de las condiciones para la correcta realización de la ANOVA.

(1.1) Normalidad.

El análisis de ANOVA asume que cada una de las muestras de los datos provienen de una
población que sigue una distribución normal. Por este motivo es importante comprobar esto.

Histogramas.

¿Qué opináis de esta distribución? ¿Es normal o parecida? ¿Qué más opciones tenemos para
comprobar la normalidad? A continuación os mostramos algunos test que podemos realizar para
verificar que existe normalidad, de forma que podamos confirmar o rechazar esta condición.

Comprobación de los residuos frente a los que tendría una distribución normal: ¡Ten en cuenta
que para este tipo de análisis debes haber calculado previamente el modelo!

81
Introducción a la Bioestadística con R

Si la mayoría de los datos se aproximan a la linea, podemos confirmar que nuestros datos
siguen una distribución normal, mientras que si los residuos se alejan de la linea es que no siguen
una distribución normal.

Comprobación de normalidad mediante un test de Shapiro-Wilk.

Aunque existen otros test (D’Agostino-Pearson, Kolmogorov-Smironov, Jarque-Barre, etc.) o


herramientas que compruban varios de ellos a la vez, generalmente con un test de Shapiro-Wilk
mediante la función `shapiro.test()`, es suficiente:
El test de Shapiro-Wilk comprueba la hipótesis nula de que los datos provienen de una
distribución normal contra la hipótesis alternativa de que no lo hacen.

Considerando que se necesita un alfa o p-valor inferior a 0.05 para poder rechazar la hipótesis
nula, el resultado del test de Shapiro-Wilk nos indica que **la distribución sigue una normal** (p-
valor > 0.05, no podemos rechazar la hipótesis nula de normalidad).

NOTA: En datasets grandes, el test de Shapiro-Wilk puede dar como resultado un p-valor
significativo (<0.05) indicándonos que no se trata de una distribución normal, aunque esta se
aproxime. Dada esta situación, y teniendo en cuenta la tolerancia de la ANOVA a que los datos se
alejen un poco de la normal, hace que la visualización de los datos en histogramas o en Q_Q
plots sean adecuados para hacernos una idea de como "normal" es nuestra distribución.

82
Introducción a la Bioestadística con R

¿Y que hacer cuando la distribución no es nada normal? En este caso tenemos dos opciones:

1. Transformar los datos a datos cuya distribución sea "más normal" AKA normalización de los
datos.
2. Efectuar un test no paramétrico que sea equivalente, como el test de Kruskal-Wallis, que no
necesita cumplir con esta condición de normalidad.

(1.2) Igualdad de las varianzas.

Como hemos comentado previamente, la segunda condición que debe cumplirse para la
realización de una ANOVA es la existencia de igualdad entre varianzas, también conocida como
condición de homocedasticidad.

En R, de nuevo, podemos recurrir a gráficos que nos indiquen este criterio de una manera
visual, o a test estadísticos como el test de Bartlett.

Mediante boxplots.

¿Cómo interpretamos la homocedasticidad en un boxplot? Debemos fijarnos en los tamaños


de las cajas, ya que la varianza crece con el tamaño de la caja. En nuestro ejemplo podemos ver
como la caja del grupo de dieta D es considerablemente más pequeño que los demás entre Q1 y
Q3, aunque con los bigotes alcanzamos tamaños parecidos.

83
Introducción a la Bioestadística con R

Mediante el test de Bartlett.

En el test de Bartlett, tenemos la hipótesis nula que establece que las varianzas de la población
son iguales frente a la hipótesis alternativa que indica que hay desigualdad en al menos dos
muestras.

Como hemos obtenido un p-valor de `r barlett$p.value`, no podemos rechazar la hipótesis nula


y debemos aceptar la alternativa, por lo que las varianzas son iguales.

¿Y que hacer cuando la distribución no cumple la igualdad de varianzas? Por regla general,
ANOVA soporta bien la violación de esta condición cuando los tamaños de cada grupo tienen el
mismo tamaño, pero si esto no es así, o crees que la diferencia de las varianzas es muy alta, lo
mejor es hacer un Kruskal-Wallis no paramétrico.

Independencia.

No tenemos test específicos para determinar si esto se cumple, ya que la única forma de
cumplir este criterio tiene que ver con el propio diseño del experimento:

¿Se ha usado un diseño aleatorizado y de forma independiente entre grupos? Si la respuesta


es sí, entonces podemos asumir la independencia. De lo contrario lo que nos indique la ANOVA
no debemos creérnoslo.

¿Y qué hacer cuando la distribución no cumple la independencia de las observaciones?

1. Repetir el experimento.
2. Realizar un Modelo Lineal de Efectos Mixtos para controlar la no independencia de las
muestras y luego sobre ese modelo realizar una ANOVA. Esto lo veremos en cursos más
avanzados.

Una vez comprobado que se cumplen las condiciones necesarias, usamos la funciones
aov() y summary() para ver los resultados de la ANOVA.

84
Introducción a la Bioestadística con R

Esta tabla resumen producida por la función summary(), describe toda la información
esencial asociada con la ANOVA.

El nivel `Dieta`, corresponde con el “Between” de nuestro ejercicio anterior (`dfbetween`,


`SSbetween` y `MSbetween`), mientras que la fila llamada ´Residuals´corresponde con la parte
de “Within” (`dfwithin`, `SSwithin` y `MSwithin`).

El valor F calculado por la función `aov` es idéntico al que calculamos de manera manual
anteriormente (**12.040**). La única información extra que tenemos aquí es el p-valor exacto
asociado con el efecto de la dieta.

En base a esto puedes concluir que la dieta afecta significativamente al peso de los
voluntarios.

(1.3) Ad hoc test: Tukey’s Honest Significant Difference.

El resultado de tu ANOVA sólo te cuenta que al menos dos medias son significativamente
diferentes entre sí, por lo tanto, puedes rechazar la hipótesis nula. Sin embargo, no te dice cuales

85
Introducción a la Bioestadística con R

son las medias que están difiriendo entre sí, podría ser el grupo A contra el B, o el B contra el C, el
A contra el C, (…) o todos entre si.

Imagínate que la dieta A es el control, y las dietas B, C y D alternativas más saludables. El


ANOVA ha encontrado diferencias significativas para el factor “Dieta” sin embargo, ¿cómo sabrías
cuál de ellas ha tenido el efecto significativo con respecto al control? A lo mejor las dietas B y C
son variaciones de la dieta estándar (A), que difieren estadísticamente entre sí, pero no contra el
control. Para responder a esta pregunta podemos hacer una prueba de comparación múltiple que
va a comparar las medias entre sí. Hay muchas pruebas de tipo post-hoc, nosotros vamos a usar
Tukey’s Honest Significant Difference test (Tukey HSD). Es similar al LSD, que puedes explorar por
ti mismo.

Las condiciones que deben de cumplirse en la prueba Tukey’s Honest Significant Difference
son las mismas que para la ANOVA:

1. Las observaciones son independientes entre sí y con respecto a otros grupos.


2. Los grupos están normalmente distribuidos.
3. La varianza entre grupos se distribuye de manera comparable (homocedasticidad de la
varianza).

El comando que se utiliza, como en el caso anterior, es muy sencillo:

TukeyHSD(aov(Y∼A)

Donde “y” es tu variable dependiente, en este caso el peso, y “A” es tu variable independiente,
es decir, la dieta A, B, C o D. Esta función la hemos almacenado bajo el nombre f1, de manera
que también podemos hacer:

En los resultados obtenidos se puede leer en la primera columna que grupos se están
comparando. Por ejemplo, la primera fila indica que R ha comparado el grupo b con el grupo a
(dieta a versus dieta b). La diferencia entre las 2 medias se da en la columna "diff". Columnas “lwr”

86
Introducción a la Bioestadística con R

que prueban si la diferencia de las 2 medias está cerca de 0). La columna de la derecha “p adj”
da el valor p ajustado para comparaciones múltiples. Esto indica que la media del grupo a (dieta a)
es significativamente diferente de la media del grupo b (dieta b) con un valor de p de 0,017. La
media del grupo a también es significativamente diferente de la media del grupo c (dieta c). Los
grupos d y b tienen medios significativamente diferentes; y los grupos c y d tienen medias
significativamente diferentes. Sin embargo, no hay diferencia entre las medias de los grupos a y d,
y de los grupos c y b.

ANOVA Tipo II.


En el ANOVA vamos a tener dos factores que analizar, por ejemplo, sexo y dieta, tratamiento y
dosis, etc. Los comandos que se usan son los siguientes.

F2 <- aov(Y∼A + B + A:B, data = Anova_tipo2)

Donde “Y” es tu variable dependiente, en este caso el tamaño, y “A” es tu variable


independiente, por ejemplo, el tratamiento. “B” es tu segunda variable dependiente, por ejemplo,
la dosis. Esta función la hemos almacenado bajo el nombre f2, así que también podemos usar la
función summary():

Ejercicio 19. ANOVA Tipo II.

En un experimento sobre manchas solares en la piel se ha medido el tamaño de la mancha, y


el tratamiento y la dosis empleada. Estos son tus datos:

87
Introducción a la Bioestadística con R

(1) Carga de los datos y boxplot multigrupos.

Observamos que los grupos se encuentran balanceados. A continuación, podemos realizar


unos gráficos de boxplot de grupos multiples:

88
Introducción a la Bioestadística con R

(2) Realización de las ANOVAS de 2 vías con y sin interacción.

Ambos factores tienen unos p-valores significativos (columna `Pr(>F)`) < de 0.05, por lo que
ambos factores pueden afectar de manera independiente a la variable tamaño (el modelo asume
que las variables factores son independientes y no interactúan de ninguna forma).

En el caso de que pudiera existir un efecto sinérgico entre ambos factores, es decir, que
ambas variables tuvieran un efecto conjunto o interacción debemos tenerlo en cuenta, y por tanto,
introducir esta variación en el modelado de nuestro análisis como vemos en el siguiente código.

(3) Comprobación de las condiciones.

Como ya sabemos, ANOVA parte de los supuestos de que los datos están distribuidos
siguiendo una distribución normal y para ello podemos realizar varias comprobaciones. Como
siempre, podemos recurrir a los gráficos de Q-Q_plots:

89
Introducción a la Bioestadística con R

Y ahora podemos comprobarlo con un test de Shapiro-wilk sobre los residuos que hemos
ploteado en el gráfico anterior:

¿Son las varianzas homogéneas?

90
Introducción a la Bioestadística con R

Especial atención a los outliers, ya que pueden afectar a la normalidad y a la igualdad de las
varianzas por lo que sería interesante probar a eliminar estas muestras del conjunto de datos.

A continuación usamos el test de Levene para comprobar las varianzas y su homogeneidad:

(4) Tukey test.

Como con la ANOVA normal, debemos conocer qué pareja de comparaciones son las que
hacen que la ANOVA sea significativa. Esto podemos hacerlo con cada grupo por separado,
especificando el argumento which = "factor" dentro de la función TukeyHSD(), o dejar ese
argumento sin usar para ambos factores.

91
Introducción a la Bioestadística con R

¿Hay que rechazar la hipótesis nula? ¿Hay algún tipo de tratamiento que haya tenido efecto?

Kruskal-Wallis Test.

La prueba Kruskal-Wallis es la alternativa no paramétrica a la ANOVA tipo I, y es en cierto modo


la continuación del Wilcoxon test cuando contamos con más de dos grupos. Este tipo de análisis
se emplea cuando no se cumplen los supuestos de la ANOVA. Recuerda que, si tus datos no
están normalmente distribuidos, siempre puedes probar a hacer una normalización por ejemplo
usando la función log10() antes que tener que recurrir a una prueba no paramétrica.

Las condiciones que deben cumplirse en un Kruskal-Wallis son:

1. Que la varianza entre grupos (homocedasticidad) sea comparable.


2. La distribución no tiene que ser normal, pero sí que tiene que ser igual entre todos los
grupos. Por ejemplo, todos los grupos tienen simetría hacia la izquierda. Si la varianza no
es homogénea la prueba indicada es la ANOVA con corrección de Welch.

El comando que se utiliza es el siguiente:

mi_modelo <- kruskal.test(Y∼A, data = my_data)

Donde “Y” es tu variable dependiente y “A” tu variable independiente. Podemos eliminar el


argumento “data” siempre y cuando hayamos adjuntados los datos inicialmente.

92
Introducción a la Bioestadística con R

Ejercicio 20. Implementación del Kruskal-Wallis Rank Sum Test.

Como los datos de este tipo son relativamente inusuales, vamos a cargar el set de datos
Datos_Kruskal_Wallis.

Vamos a echar un vistazo a los datos, hay diferentes opciones, puedes usar el paquete “dplyr”
y explorar de manera detallada todas las variables descriptivas que te interesen. Aquí sólo vamos a
echar un vistazo rápido usando la función summary() y ggboxplot() para entender un poco la
distribución de nuestros datos antes de usarlos.

93
Introducción a la Bioestadística con R

94
Introducción a la Bioestadística con R

Comprobamos ahora que se cumplen las condiciones para poder utilizar el test de Kruskal-
Wallis.

A continuación, ejecutamos el test.

En el test de Kruskal-Wallis, tenemos una hipótesis nula que defiende que las muestras
pertenecen a la misma población (distribuciones iguales), mientras que la hipótesis alternativa
indica desigualdad en al menos una de las muestras.

Como el valor de p está por debajo de 0.05, debemos rechazar la hipótesis nula y podemos
concluir que nuestros grupos pertenecen a distribuciones diferentes (que se traduje en que hay
diferencias significativas entre los grupos).

Vamos a utilizar una comparación multiple para ver de dónde vienen las diferencias. Las
comparaciones múltiples necesitan ser corregidas (multiple testing correction), aquí vamos a utilizar
el método BH, por sus autores Benjamini y Hochberg. Dichas correciones producen valores
conocidos como False Discovery Rate (FDR).

95
Introducción a la Bioestadística con R

Como podemos ver por los resultados, sólo el tratamiento 1 contra el 2 son significativamente
diferentes, es decir, tienen un valor p ajustado por debajo de 0.05

Si tenemos más de dos factores, no podremos usar la ANOVA, y habrá que recurrir a otro tipo
de modelos.

96
Introducción a la Bioestadística con R

Sección 7: Correlaciones.

Conceptos clave.

• Las correlaciones son medidas de asociación entre dos variables continuas que
miden la covariación de las mismas.
• Su rango es de -1 a +1, siendo ambos extremos asociaciones perfectas.
• El signo indica el sentido de la covariación.
• Potencia de relación:
• |r| = 1 ⟶ Asociación perfecta.
• |r| > 0.7 ⟶ Asociación alta.
• |r| > 0.5 ⟶ Asociación moderada.
• |r| > 0.3 ⟶ Asociación ligera.
• |r| = 0 ⟶ Asociación nula.

Las correlaciones como medida de asociación entre variables.


Las correlaciones son medidas de asociación entre variables cuantitativas que tratan de darnos
un valor de relación entre ellas (sin implicar causalidad), una forma de medir su covariación o
variación conjunta.
Generalmente, la correlación se representa con la letra r, y sus valores están acotados entre -1
y 1, siendo -1 y 1 correlaciones perfectas, con relación positiva (covarían en el mismo sentido) o
negativa (covarían en sentidos opuestos).

A diferencia de otros métodos, la correlación no tiene en cuenta si una de las dos variables que
se estudian depende de la otra, simplemente analiza si existe la covariación o la asociación que
comentábamos anteriormente.

Potencia de la relación.
El rango comprendido entre [-1, 1] nos indica el grado de asociación que existe, desde nulo hasta
perfecto, y ademas nos indica el sentido de la relación. Pero, a partir de qué valor podemos decir
que existe o que no existe una relación entre nuestras variables?
En términos generales podemos usar los siguientes limites como referencia:

• |r| = 1 –> Asociación perfecta


• |r| > 0.7 –> Asociación alta
• |r| > 0.5 –> Asociación moderada
• |r| > 0.3 –> Asociación ligera
• |r| = 0 –> Asociación nula

97
Introducción a la Bioestadística con R

Tipos de test de correlación.


Al igual que ocurre con otros tipos de pruebas, las de correlación también son susceptibles a
la propia naturaleza de los datos, especialmente atendiendo al nivel de normalidad, podemos usar
un tipo de test u otro.

(1) Test de correlación de Pearson.


El test de correlación de Pearson es, quizás, el más común en su uso, pero debemos saber
que para usarlo se deben cumplir la condición de normalidad para las variables que se pretenden
correlacionar. Aunque como suele pasar, este tipo de test suele ser más o menos robusto frente a
ciertas desviaciones de la normalidad. Sin embargo, si que resulta bastante más sensible a la
presencia de datos extremos (outliers), y en ocasiones justificadas, es posible que estos, tras ser
analizados debidamente, puedan ser eliminados para la realización de la prueba.

¡Pongámoslo en practica!

Ejercicio 21. Cálculo de correlación en R.

Tenemos 100 individuos elegidos en un estudio al azar, en el que se les han medido diferentes
parámetros, entre ellos, la altura y el peso. ¿Están estos datos correlacionados? Empecemos por
introducir nuestros datos en R.

Peso (kg): 45.31, 84.15, 63.52, 75.32, 37.26, 81.77, 99.57, 61.93, 73.2, 64.59, 68.41, 39.27,
84.52, 61.23, 50.01, 71.02, 61.09, 69.33, 81.31, 66.7, 66.65, 62.94, 83.21, 95.32, 58.25

Altura (cm): 161.78, 193.21, 193.95, 181.11, 158.92, 185.78, 179.63, 203.36, 176.69, 189.15,
169.81, 168.48, 184.05, 192.9, 182.31, 164.43, 179.09, 180.21, 175.13, 179.95, 173, 194.5,
195.18, 182.85, 198.13

A continuación, vamos a ver si estos datos cumplen la condición de normalidad:

98
Introducción a la Bioestadística con R

Parece que ambas variables se acercan a una distribución normal.

Como podemos ver, en ambos casos debemos aceptar la hipótesis nula (H0) de que las
distribuciones son normales. También resultan interesantes las representaciones gráficas mediante
gráficos de dispersión:

99
Introducción a la Bioestadística con R

Como ya podemos ver en el gráfico, no parece que los datos vayan a estar muy relacionados
entre sí.

A continuación comprobamos la condición de homocedasticidad.

Tenemos que aceptar la hipótesis nula de que el ratio de las varianzas es igual a 1 (varianzas
iguales).

100
Introducción a la Bioestadística con R

Para estudiar la correlación en R podemos usar la función cor() o la función cor.test(), que
además nos proporcionará la significancia del test:

Según nos muestran los resultados, la asociación de nuestros datos al azar muestran una
ligera correlación positiva, aunque no nos ha salido significativa, por lo que no deberíamos aceptar
estos resultados. Entre las razones de la falta de significancia podemos destacar el bajo número
de individuos analizados, lo cual afecta al poder estadístico.

(2) Test de correlación de Spearman.


En este caso, la correlación de Spearman se utiliza para datos numéricos ordinales, o están en
intervalos. Esta característica también lo hace adecuado para aquellos datos continuos no
normales (y por lo tanto no adecuados para la correlación de Pearson) tras ser transformados en
rangos.
Una vez que hemos identificado que los datos cumplen los requisitos para ser usados con el
método de Spearman (datos no paramétricos), usaremos la misma función que en el caso
anterior, cor.test, pero especificando en el argumento method que vamos a usar el método de
Spearman:

101
Introducción a la Bioestadística con R

(3) Matrices de correlación y sus gráficos.

Para completar este ejercicio, cargamos los datos “ejercicio_21_data.txt”

Si además de querer las correlaciones queremos sus niveles de significancia, el paquete hmisc
es nuestro aliado. Como hemos hecho anteriormente, instalamos el paquete con la función
install.packages() y cargamos las librerías con la función library():

Install.packages(“Hmisc”)
library(Hmisc)

102
Introducción a la Bioestadística con R

Con esta librería podemos obtener los p-valores por separado si queremos.

103
Introducción a la Bioestadística con R

(3.1) Visualización de las matrices de correlación con el paquete corrplot.


La función corrplot es capaz de generarnos un correlograma de las matrices de correlación que
hemos generado previamente, de forma que podamos analizar visualmente las asociaciones de
nuestras variables. Instalamos y cargamos el paquete correspondiente:

install.packages(“corrplot”)
library(corrplot)

104
Introducción a la Bioestadística con R

(3.2) El paquete PerformanceAnalytics.


Este paquete nos permite realizar unos gráficos más descriptivos de las matrices de correlación
como veremos a continuación:

105
Introducción a la Bioestadística con R

Sección 8: Modelos lineares.

Conceptos clave.

• Con un modelo linear, generamos una función matemática que describe el


comportamiento de una variable dependiente y a partir del comportamiento de una o
más variables independientes x.
• Podemos hablar de modelos de regresión lineal simple o múltiple, dependiendo del
número de variables independientes que tengamos.

En los modelos de regresión lineales se supone que el valor de una variable dependiente “y”
puede escribirse en función del valor de una o más variables independientes “x”. En nuestro caso,
vamos a centrarnos en esta sección en un modelo de regresión múltiple en el que la función
matemática que describe la relación entre ambas variables es:

y = a + b1x1 + b2x2 + b3x3 … b𝜅x𝜅

Dónde “y” es la variable dependiente, “x1, x2, x3, … x𝜅” son las variables independientes, y “b1, b2,
b3, … b𝜅” son los coeficientes que vamos a estimar.

Como ocurre con otros análisis estadísticos vistos en este curso, para utilizar modelos lineares
nuestros datos han de cumplir las siguientes condiciones (assumptions):

1. Linealidad: se presupone una relación lineal entre las variables.


2. Homocedasticidad: homogeneidad de las varianzas.
3. Independencia de las muestras.
4. Distribución normal de los datos.

107
Introducción a la Bioestadística con R

108
Introducción a la Bioestadística con R

Ejercicio 22. Regresión linear múltiple en R.

Para este ejercicio vamos a utilizar la base de datos “ProsCancer-mod” que contiene
información sobre distintas variables analizadas en pacientes con cáncer de próstata. Importamos
la base de datos y utilizamos la función attach() cómo hemos visto anteriormente para adjuntar los
datos, y echamos un primer vistazo a la información contenida con la función head(). Además,
podemos comprobar el tipo de variable que R ha asignado a cada variable con la función class() y
corregir aquellas que pudieran ser erróneas.

En concreto vamos a examinar si existe una relación lineal entre la variable dependiente “lbph”
(benign prostate hyperplasia) y las variables independientes “age”, “lcavol” (cancer volume) y
“lweight” (prostate weight). Para ello utilizamos la función lm():

Aunque los resultados de la función lm() dan por ejemplo el valor de la constante “a” (intercept),
no nos ofrecen mucha información extra sobre el ajuste del modelo, por lo que recurrimos a la
función summary() para ampliarla:

109
Introducción a la Bioestadística con R

La función summary() nos devuelve la estimación de los coeficientes con su error estándar, y
un valor t que sigue una distribución t-test, que se obtiene de dividir cada coeficiente por su error.
En último lugar, se obtiene el valor p-value para cada cada coeficiente que nos permite o no
rechazar la hipótesis nula. La información restante corresponde con el coeficiente de correlación
múltiple o coeficiente de determinación (Multiple R-squared) y su valor ajustado (Adjusted R-
squared) y el estadístico F y su p-value asociado.

Si nos fijamos en nuestros resultados, todos los valores son estadísticamente significativos con
la excepción de lcavol (recordemos, volumen del cáncer). Lo mismo ocurre con el p-value de del
estadístico F, de manera que podemos concluir que las variables edad (age) y peso de la próstata
(lweight) nos permiten predecir el valor de la variable dependiente lbph.

Vamos a realizar una serie de diagnósticos para confirmar que nuestro modelo es válido y sigue
los cuatro supuestos establecidos al inicio de esta sección. En primer lugar, vamos a representar
el valor obtenido de los residuos (diferencia entre el valor real de la variable dependiente y su valor
estimado en nuestro modelo linear) y las distintas medidas. Para ello utilizamos la función plot().

110
Introducción a la Bioestadística con R

En el primer gráfico (Residuals vs Fitted) comprobamos si nuestro modelo se ajusta a un patrón


lineal o no. Idealmente, un modelo que no tiene comportamiento no lineares mostrará una nube de
puntos distribuidos de manera equilibrada a ambos lados de la línea recta. Como hemos visto
anteriormente en el curso, el Q-Q plot nos indica de una manera aproximada y visual si los datos
siguen una distribución normal. El tercer gráfico Scale-Location nos indica si se cumple el
supuesto de homocedasticidad, de manera que esperamos ver los puntos distribuidos de manera
aleatoria a los dos lados de la línea roja.

En la segunda parte de este ejercicio vamos a comprobar qué ocurre cuando eliminamos una
de las variables predicadoras de nuestro modelo. En este caso, vamos a prescindir de la variable
“lcavol” que como parece indicar nuestro análisis anterior, no tiene un efecto significativo sobre
nuestra variable dependiente. Repetimos los pasos que hemos seguido en la construcción,
análisis y diagnóstico:

111
Introducción a la Bioestadística con R

Por último, podemos realizar un análisis de la varianza (ANOVA) para fundamentar nuestro
modelo.

112
Introducción a la Bioestadística con R

Sección 9: Introducción a los “power analysis” (o análisis de


potencia en español).

Conceptos clave.

• En los análisis de potencia hay cuatro conceptos clave relacionados entre sí, estos
son: i) tamaño de la muestra, ii) tamaño del efecto, iii) nivel de significancia y iv)
potencia. Si conoces tres, puedes calcular el restante. En esto consisten los análisis
de potencia que vamos a estudiar en esta sección.
• Hay un libro de referencia en relación al análisis de potencia, se llama ‘Statistical
power analysis for the behavioral sciences” de Jacob Cohen. Si quieres ampliar
más sobre este concepto, no dudes en pedirlo en tu biblioteca.

Seguramente ya habrás escuchado hablar de los “Power Analysis”; son un aspecto importante
del diseño experimental ya que nos permite calcular el tamaño de muestra que necesitamos para
detectar un efecto significativo con cierto intervalo de confianza, es decir, cuántos pacientes hace
falta reclutar en un experimento. O, al contrario, que potencia tenemos para detectar un efecto
significativo (por ejemplo, fijado a 0.05) con una muestra dada de por ejemplo 30 pacientes.
Debido a que en muchas ocasiones los estudiantes de doctorado o postdoctorado se unen a un
proyecto que alguien ya ha diseñado previamente (su supervisor), encuentran que este trabajo ya
está hecho por ellos. Sin embargo, es importante conocer cómo funcionan. En esta sección
vamos a ver una introducción sencilla a los Power Analysis.

Los siguientes cuatro conceptos están relacionados entre sí, si conoces tres de ellos puedes
calcular el cuarto, en eso consisten los análisis de potencia que vamos a estudiar en R:

4. Tamaño de la muestra (sample size)


5. Tamaño del efecto (effect size)
6. Nivel de significancia = P (error tipo I) = probabilidad de encontrar un efecto que no es real.
Éste por defecto, se fija a 0.05, de manera que ya tenemos uno de los tres valores
necesarios.
7. Potencia (power) = 1 - P (error tipo II) = probabilidad de encontrar un efecto que sí es real.

Esta sección es sólo una introducción a los análisis de potencia, y vamos a ver cómo se
calcularían en el caso del t-test y la ANOVA, que son algunos de los análisis que hemos aprendido
durante el curso. Para ello vamos a usar el paquete “pwr”, que va a tener distintas funciones
dependiendo del método para el que se use.

Función en R Análisis de potencia para:


pwr.t.test t-tests (one sample, 2 sample, paired)
pwr.t2n.test t-test (two samples with unequal n)
pwr.anova.test balanced one way ANOVA
pwr.r.test correlation

113
Introducción a la Bioestadística con R

En primer lugar, instala y carga el paquete como ya hemos visto anteriormente:

install.packages(“pwr”)
require(pwr)
library(pwr)

Normalmente vas a necesitar calcular el tamaño de muestra (el punto 1), es decir, cuantos
pacientes necesitas para tu estudio, o la potencia de tu experimento (el punto 4).

Análisis de potencia para el t-test.

La función que se usa en el t-test es la siguiente:

pwr.t.test(n =, d =, sig.level =, power =,, type = c(“two.sample/one.sample/paired”))

Donde “n” es el tamaño de tu muestra, “d” es el tamaño del efecto y el argumento “type” indica el
tipo de t-test que vamos a realizar.

El tamaño del efecto, es decir, ‘d’, se estima utilizando la siguiente fórmula: d=|μ1-μ2|/σ2,
donde μ1 es la media de tu grupo 1, μ2 es la media de tu grupo 2, y σ2 es la variación de error
común. Cohen, en su libro de 1988, sugiere que valores de d de 0.2, 0.5 y 0.8 representan
tamaños de efecto pequeños, medianos y grandes.

Ejercicio 23. Cálculo


de la potencia
de análisis en el caso
de t-test de una y
dos colas.

(1) Calcula la potencia


del análisis de
un t-test de UNA cola
con un grupo cuyo
nivel de significancia
fijamos a

114
Introducción a la Bioestadística con R

0.05.Queremos que haya 30 personas en cada grupo, y la d (efecto del tamaño) sea igual a
0.75

115
Introducción a la Bioestadística con R

(2) Ahora calcula la potencia del análisis de un t-test de DOS colas con los mismos parámetros:

116
Introducción a la Bioestadística con R

Análisis de potencia para la ANOVA.


Para realizar el análisis de potencia en la ANOVA tipo I usaremos la siguiente fórmula:

pwr.anova.test(k =, n =, f =, sig.level =, power =)

Donde “k” es el número de grupos, “n” es el tamaño de tu muestra común, y “f” mide el efecto del
tamaño. Valores de 0.1, 0.25 y 0.4 representan efectos de tamaño pequeños, medianos y
grandes según Cohen (1988).

Ejercicio 24. Cálculo de la potencia de análisis en el caso de la ANOVA tipo I.

(1) Para una ANOVA de tipo I en la que se comparan 3 grupos, calcula el tamaño de muestra
necesario para obtener una potencia de 0.90, cuando el efecto del tamaño es pequeño (0.1), y
el nivel de significancia lo vamos a fijar a 0.01.

Obtén una gráfica.

117
Introducción a la Bioestadística con R

Como ves, tu N en cada grupo es bastante grande. ¿Qué ocurriría si redujéramos nuestras
expectativas y fijáramos los parámetros de la siguiente manera?: potencia de 0.80, cuando el
efecto del tamaño es moderado (0.25), y el nivel de significancia lo vamos a fijar a 0.05.

118
Introducción a la Bioestadística con R

Como puedes ver, la n se ha reducido considerablemente, ahora necesitas reclutar menos


voluntarios. El investigador tendrá que valorar qué margen de riesgo está dispuesto a tolerar en su
experimento, y qué tamaño de grupo tiene que asegurar.

119
Introducción a la Bioestadística con R

Sección 10: Gráficos en R.


Los gráficos son una parte esencial de la investigación. Son necesarios para interpretar los
datos, sobre todo en el caso de las ciencias -ómicas, y también para ilustrar los resultados. Hay
gente que te dirá (de manera no oficial) que los gráficos son el 50% de tu artículo y la llave que te
pueden abrir las puertas a una revista científica de mejor impacto. Hay cientos de opciones con R,
en esta sección vamos a revisar las principales, de manera que puedas adquirir conocimientos
fundamentales que te permitan seguir explorando más recursos de manera autónoma. Algunas
recomendaciones para esto son el R Graphics Cookbook y The R Graph Gallery web https://
www.r-graph-gallery.com/index.html.

Ejercicio 25. Gráficos de distribución.

Los gráficos de distribución permiten visualizar la distribución de una variable de tipo numérica
para uno o varios grupos. Los ejemplos más clásicos son los boxplot, de los que ya hemos visto
algunos a lo largo del curso, así como los histogramas, aquí además vamos a ver otras opciones.

2. En primer lugar carga las librerías que se especifican. Vamos a probar a hacer gráficos de
dispersión básicos con dos paquetes distintos, ggplot2 y lattice, cuyo uso está muy
extendido. Para ello vamos a usar la base de datos iris, que está incluida en R.

121
Introducción a la Bioestadística con R

122
Introducción a la Bioestadística con R

123
Introducción a la Bioestadística con R

2. Ahora, vamos a usar la base de datos PlantGrowth para hacer algunos boxplots probando
varias opciones: boxplot básicos, con punteado, y los de violin que son los que están más de
moda.

124
Introducción a la Bioestadística con R

125
Introducción a la Bioestadística con R

126
Introducción a la Bioestadística con R

127
Introducción a la Bioestadística con R

128
Introducción a la Bioestadística con R

3. Finalmente, con la base de datos “iris” vamos a hacer un gráfico de densidad usando la paleta
del journal Lancet. Muchos paquetes te dan la opción de usar paletas de revistas científicas
específicas para facilitar así la publicación de los artículos. Por ejemplo, algunos de los valores
permitidos son:

• Paletas grises: “grey” o “gray”


• Paletas de tipo RColorBrewer: “RdBu”, “Blues”, “Dark2”, “Set2”, etc. Échale un vistazo a
brewer.pal para ver más opciones.
• Las paletas con formato de revista científica: “aaas”, “lancet”, “npg”, “jco”, “ucscgb”,
“uchicago”, “simpsons” y “rickandmorty”.
• Paletas personalizadas: Por ejemplo, puedes elegir tu código de color usando la opción:
palette = c(“#00AFBC”, “#E7B801”, “#FC4E08”), etc. Recuerda que tienes que añadir
tantos colores como grupos necesitas colorear. Los códigos de colores que hay
disponibles online para elegir tu opción personalizada.

129
Introducción a la Bioestadística con R

Es muy común terminar de editar tus gráficos con algún software de tipo vectorial. Para eso,
expórtalos en formato .pdf y súbelos a un software de edición de imágenes vectorial de tu
preferencia. Por ejemplo, Inkscape (https://inkscape.org) que es gratuito, Affinity Designer que es
muy fácil de usar y con un precio asequible, o para usuarios más avanzados también están las
clásicas opciones de Photoshop, o Adobe Illustrator, que son más caros y complejos, pero con
opciones más avanzadas.

Es un poco complicado dejar un gráfico listo para publicación en R porque conlleva mucha
programación, y a veces es más fácil usar uno de estos programas. En el siguiente ejercicio
vamos a ver cómo combinar varios gráficos en R, siempre teniendo presente que se recomienda
terminar los detalles más específicos en un editor de gráficos vectorial.

Ejercicio 26. Combinación de gráficos.

1. Carga los datos de muestra y las librerías necesarias.

2. Crea tus gráficos básicos y almacénalos bajo un nombre.

130
Introducción a la Bioestadística con R

131
Introducción a la Bioestadística con R

3. Organízalos como paneles independientes dentro de una misma figura.

132
Introducción a la Bioestadística con R

4. Anota la figura.

133
Introducción a la Bioestadística con R

134
Introducción a la Bioestadística con R

Referencias.

Sitios web.

Bioconductor - https://bioconductor.org
Ciencia de datos, teoría y ejemplos prácticos en R y Python - https://www.cienciadedatos.net
Error tipo I - https://economipedia.com/definiciones/error-tipo-i.html
Linear models in R: Plotting regression lines - https://www.theanalysisfactor.com/linear-
models-r-plotting-regression-lines/
Kabacoff, R. Quick-R - https://www.statmethods.net
Lenguaje R, ¿qué es y por qué es tan usado en Big Data? - https://www.unir.net/ingenieria/
revista/lenguaje-r-big-data/
Rpubs - https://rpubs.com
t.test function - https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/
t.test
Sthda - http://www.sthda.com/english/
R-Graph-Gallery - https://r-graph-gallery.com
Datacamp - https://datacamp.com

Wiki.

Richard Mankiewicz, The Story of Mathematics (Princeton University Press), p.158.


• ↑ Saltar a: a b O'Connor, John J.; Robertson, Edmund F., «Prueba t de Student» (en
inglés), MacTutor History of Mathematics archive, Universidad de Saint Andrews.
• ↑ Fisher Box, Joan (1987). «Guinness, Gosset, Fisher, and Small Samples». Statistical
Science 2 (1): 45-52. JSTOR 2245613. doi:10.1214/ss/1177013437.
• ↑ Raju TN (2005). «William Sealy Gosset and William A. Silverman: two "students" of
science». Pediatrics 116 (3): 732-5. PMID 16140715. doi:10.1542/peds.2005-1134.
• ↑ Saltar a: a b Fadem, Barbara (2008). High-Yield Behavioral Science (High-Yield Series).
Hagerstwon, MD: Lippincott Williams & Wilkins. ISBN 0-7817-8258-9.
• ↑ Zimmerman, Donald W. (1997). «A Note on Interpretation of the Paired-Samples t
Test». Journal of Educational and Behavioral Statistics 22 (3): 349-360. JSTOR 1165289.

135
Introducción a la Bioestadística con R

M.R. Spiegel; J. Schiller; R. A. Srinivasan (2007). «9. Análisis de la varianza». Probabilidad


y Estadística [Schaum's Outline of Theory and Problems of Probability and Statistics].
Schaum (2ª edición). México D.F.: McGraw-Hill. pp. 335-371. ISBN 978-970-10-4231-1.
• F. J. Tejedor Tejedor (1999). Análisis de varianza. Schaum. Madrid: La Muralla
S.A. ISBN 84-7635-388-X.
• William H. Kruskal and W. Allen Wallis. Use of ranks in one-criterion variance
analysis. Journal of the American Statistical Association 47 (260): 583–621, December
1952.
• Sidney Siegel and N. John Castellan, Jr. (1988). Nonparametric Statistics for the
Behavioral Sciences (second edition). New York: McGraw-Hill.
• Wilcoxon, F. (1945) "Individual Comparisons by Ranking Methods". Biometrics 1, 80-83.
• Sin autor (Octubre de 2010). «Historia estadística». www.ine.es/explica/docs/historia_estadistica.pdf.
Consultado el 2010.
• Inferencia Estadística (2ª Edición Revisada). ISBN 978-84-9828-131-6. Consultado el 27 de abril de
2010.

Libros.

Statistics in a nutshell: A desktop quick reference. Boslaugh S, Watters PA. O’Reilly Media,
2008.

Bioestadística Amigable. Martinez Gonzalez MA, Sanchez Villegas AS, Toledo Atucha ET,
Fajardo JF. Elsevier, 2020. Electronic book.

Statistical Power Analysis for the Behavioral Siciences. Second Edition. Jacob Cohen.
1988.

R Cookbook by Paul Teetor (2011) ed. O’Reilly

The R book by Michael J. Crawley (2009) ed. John Wiley & Sons Ltd

Statistics – An introduction using R by Michael J. Crawley (2005) ed. John Wiley & Sons
Ltd

Statistical and Data Handling Skills in Biology. Roland Ennos. Prentice hall. Editorial:
Pearson Education Limited, 2011.

136

También podría gustarte