Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCIÓN
A LA
BIOESTADÍSTICA
CON R
MARINA MORA ORTIZ
ALMUDENA PINO ÁNGELES
FERNANDO A. JIMÉNEZ
AUTORÍA
EDITA
UCOPress
Editorial de la Universidad
de Córdoba
Índice.
Sección 5: Comparando dos grupos: t-Test y Wilconxon’s Rank Sum Test __ Página 61
Conceptos clave.
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
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 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
Conceptos clave.
Ejercicio 1.
Descargar e instalar R y RStudio. Elige la opción 1 o 2 dependiendo de tu sistema operativo.
3
Introducción a la Bioestadística con R
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.
5
Introducción a la Bioestadística con R
Puedes crear una carpeta de referencia para probar los siguientes pasos de este tutorial y
llamarla R1.
6
Introducción a la Bioestadística con R
7
Introducción a la Bioestadística con R
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
8
Introducción a la Bioestadística con R
Conceptos clave.
• 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).
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.
9
Introducción a la Bioestadística con R
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: _.
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.
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.
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
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
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.
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”.
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.
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
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().
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
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.
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
Hay varias operaciones básicas que pueden realizarse con una matriz, por ejemplo, calcular
sus dimensiones o trasponerla.
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
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
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.
En este ejercicio se comparan un tratamiento del cáncer tradicional (1) con otro tratamiento aún
en fase experimental (2).
26
Introducción a la Bioestadística con R
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
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.
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.
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
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
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.
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.
34
Introducción a la Bioestadística con R
35
Introducción a la Bioestadística con R
Conceptos clave.
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
Este es un ejercicio con comandos explicados y sus soluciones. Una parte del ejercicio es
guiada.
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:
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.
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
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:
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:
41
Introducción a la Bioestadística con R
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
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.
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
Las tablas de una vía nos van a devolver una tabla de frecuencias de la variable que queramos
analizar, por ejemplo el sexo:
En este caso, podemos interrogar los datos para qué nos proporcione la información que
queremos, por ejemplo, la frecuencia de remisiones por sexo.
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:
49
Introducción a la Bioestadística con R
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:
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.
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:
51
Introducción a la Bioestadística con R
Para calcular las frecuencias acumuladas utilizamos otra función básica de R llamada
“addmargins”.
52
Introducción a la Bioestadística con R
53
Introducción a la Bioestadística con R
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.
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
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.
Este es un ejercicio con comandos explicados y soluciones. Una parte del ejercicio es guiada.
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().
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
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
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
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.
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?).
62
Introducción a la Bioestadística con R
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".
• 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.
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.
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
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:
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.
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í.
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.
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.
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
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.
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
71
Introducción a la Bioestadística con R
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.
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.
72
Introducción a la Bioestadística con R
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.
• 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
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:
74
Introducción a la Bioestadística con R
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.
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.
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.
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).
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.
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
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.
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”.
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.
summary(mi_modelo)
plot(mi_modelo)
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.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.
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.
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.
83
Introducción a la Bioestadística con R
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.
¿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:
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 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.
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.
Las condiciones que deben de cumplirse en la prueba Tukey’s Honest Significant Difference
son las mismas que para la ANOVA:
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.
87
Introducción a la Bioestadística con R
88
Introducción a la Bioestadística con R
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.
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:
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.
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.
92
Introducción a la Bioestadística con R
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.
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.
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:
97
Introducción a la Bioestadística con R
¡Pongámoslo en practica!
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
98
Introducción a la Bioestadística con R
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í.
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.
101
Introducción a la Bioestadística con R
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
install.packages(“corrplot”)
library(corrplot)
104
Introducción a la Bioestadística con R
105
Introducción a la Bioestadística con R
Conceptos clave.
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:
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):
107
Introducción a la Bioestadística con R
108
Introducción a la Bioestadística con 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 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
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:
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.
113
Introducción a la Bioestadística con R
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).
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.
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
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).
(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.
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
119
Introducción a la Bioestadística con R
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:
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.
130
Introducción a la Bioestadística con R
131
Introducción a la Bioestadística con R
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.
135
Introducción a la Bioestadística con R
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.
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