R para ciencia de datos de salud

de Ewen Harrison y Riinu Pius

Published

August 25, 2022

Prefacio

Consejos

Recursos de HealthyR: healthyr.surgicalinformatics.org

Los conjuntos de datos de ejemplo utilizados en el libro se pueden descargar aquí .

Versión 1.0.1

Tiene licencia Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License .

Por qué leer este libro

Nos estamos ahogando en información pero hambrientos de conocimiento.
Juan Naisbitt

En esta era de la información, la manipulación, análisis e interpretación de datos se han convertido en una parte fundamental de la vida profesional. En ninguna parte más que en la prestación de atención médica. Desde la comprensión de la enfermedad y el desarrollo de nuevos tratamientos, hasta el diagnóstico y manejo de pacientes individuales, el uso de datos y tecnología son ahora una parte integral del negocio de la atención médica.

Quienes trabajan en el cuidado de la salud interactúan a diario con los datos, a menudo sin darse cuenta. La conversión de esta avalancha de información en conocimiento útil es esencial para una atención al paciente de alta calidad. Una parte importante de esta revolución de la información es la oportunidad para que todos se involucren en el análisis de datos. Esta democratización está impulsada en parte por el movimiento del software de código abierto: ya no necesitamos un costoso software especializado para hacer esto.

El lenguaje de programación estadística, R, está firmemente en el corazón de esto.

Este libro llevará a una persona con poca o ninguna experiencia en ciencia de datos hasta la ejecución de análisis sofisticados. Hacemos hincapié en la importancia de comprender verdaderamente los datos subyacentes con el uso liberal de gráficos, en lugar de depender de pruebas estadísticas opacas y posiblemente mal entendidas. Se incluyen numerosos ejemplos que se pueden adaptar a sus propios datos, junto con nuestros propios paquetes R con funciones fáciles de usar.

Nos divertimos mucho enseñando este curso y nos enfocamos en hacer que el material sea lo más accesible posible. Limitamos las ecuaciones al mínimo a favor del código y usamos ejemplos en lugar de largas explicaciones. Agradecemos a las muchas personas y estudiantes que ayudaron a perfeccionar este libro y agradecemos las sugerencias y los informes de errores a través de https://github.com/SurgicalInformatics .

Colaboradores

Estamos en deuda con las siguientes personas que han contribuido generosamente con su tiempo y material para este libro: Katie Connor, Tom Drake, Cameron Fairfield, Peter Hall, Stephen Knight, Kenneth McLean, Lisa Norman, Einar Pius, Michael Ramage, Katie Shaw y Olivia. Cisne.

Sobre los autores

Ewen Harrison es cirujano y Riinu Pius es físico. Y ambos también son científicos de datos. Incursionan en algunos lenguajes de programación y generalmente se dedican a la tecnología. Están más entusiasmados con el lenguaje de programación estadística R y tienen una experiencia combinada de 25 años usándolo. Trabajan en la Universidad de Edimburgo y han enseñado R a cientos de profesionales de la salud e investigadores.

Creen que una primera introducción a R y la programación estadística debería estar relativamente libre de jerga y orientada a los resultados (obtenga esos gráficos bonitos). La comprensión de conceptos complicados vendrá con el tiempo con la práctica y la experiencia, no a través de un recuento de la historia de la computación bit por byte, o con la inclusión de las ecuaciones subyacentes para cada prueba estadística (aunque Ewen ha colado algunas ecuaciones en).

En general, esperan que el texto sea divertido y accesible. Como ellos.

(PARTE) Manejo y visualización de datos

Por qué amamos a R

Gracias por elegir este libro sobre el uso de R para el análisis de datos de salud. Incluso si ya está familiarizado con el lenguaje R, esperamos que encuentre algunos enfoques nuevos aquí, ya que aprovechamos al máximo las herramientas R más recientes, incluidas algunas que hemos desarrollado nosotros mismos. Se anima a aquellos que ya están familiarizados con R a seguir hojeando los primeros capítulos para familiarizarse con el estilo de R que recomendamos.

R se puede usar para todas las aplicaciones de ciencia de datos de salud que se nos ocurran. Desde la bioinformática y la biología computacional hasta el análisis de datos administrativos y el procesamiento del lenguaje natural, pasando por el internet de las cosas y los datos portátiles, hasta el aprendizaje automático y la inteligencia artificial, e incluso la salud pública y la epidemiología. R lo tiene todo.

Estas son las principales razones por las que amamos a R:

  • R es versátil y potente: utilícelo para

    • gráficos;
    • todas las pruebas estadísticas con las que puedas soñar;
    • aprendizaje automático y aprendizaje profundo;
    • informes automatizados;
    • sitios web;
    • e incluso libros (sí, este libro fue escrito completamente en R).
  • Los scripts R se pueden reutilizar: le brinda eficiencia y reproducibilidad.

  • Es de uso gratuito para cualquier persona, en cualquier lugar.

Ayuda, ¿qué es un script?

ndex{RStudio@ xtbf{RStudio}!script}

Un script es una lista de instrucciones. Es solo un archivo de texto y no se requiere ningún software especial para verlo. En la Figura @ ref(fig:chap01-fig-rscript) se muestra un script R de ejemplo.

¡No entrar en pánico! Lo único que debe comprender en este punto es que lo que está viendo es una lista de instrucciones escritas en lenguaje R.

índice{comentarios} También debe notar que algunas partes del guión se ven como un inglés normal. Estas son las líneas que comienzan con un # y se llaman “comentarios”. Podemos (y debemos) incluir estos comentarios en todo lo que hacemos. Estas son notas de lo que estábamos haciendo, tanto para los colegas como para nosotros mismos en el futuro.

FIGURA 1.1: Un script R de ejemplo de RStudio.

Las líneas que no comienzan con # son código R. Aquí es donde realmente sucede el cálculo numérico. Cubriremos los detalles de este código R en los próximos capítulos. El propósito de este capítulo es describir parte de la terminología, así como la interfaz y las herramientas que utilizamos.

Para los impacientes:

  • Interconectamos R usando RStudio
  • Usamos los paquetes tidyverse que son una extensión sustancial de la funcionalidad básica de R (repetimos: extensión, no reemplazo)

Aunque R es un lenguaje, no crea que después de leer este libro debería poder abrir un archivo en blanco y comenzar a escribir el código R como un malvado genio informático de una película. Así no es como se ve la programación del mundo real.

En primer lugar, debe copiar, pegar y adaptar ejemplos de código R existentes, ya sea de este libro, Internet o más adelante de su trabajo existente. Reescribir todo desde cero no es eficiente. Sí, comprenderá y eventualmente recordará gran parte de ella, pero dedicar tiempo a memorizar funciones específicas que se pueden buscar y copiar fácilmente simplemente no es necesario.

En segundo lugar, R es un lenguaje interactivo. Lo que significa que “ejecutamos” el código R línea por línea y obtenemos comentarios inmediatos. No escribimos un guión completo sin probar cada parte a medida que avanzamos.

En tercer lugar, no se preocupe por cometer errores. ¡Celébralos! El punto central de R y la reproducibilidad es que las manipulaciones no se aplican directamente en un conjunto de datos, sino en una copia del mismo. Todo está en un guión, así que no puedes hacer nada malo. Si comete un error, como sobrescribir accidentalmente sus datos, podemos volver a cargarlos, volver a ejecutar los pasos que funcionaron bien y continuar averiguando qué salió mal al final. Y dado que todos estos pasos están escritos en un script, R rehará todo con solo presionar un botón. No tiene que repetir una serie de clics del mouse desde los menús desplegables como en otros paquetes estadísticos, lo que rápidamente se convierte en una bendición.

¿Qué es RStudio?

índice{RStudio}

RStudio es un programa gratuito que facilita el trabajo con R. En la Figura @ ref(fig:chap01-fig-rstudio) se muestra una captura de pantalla de ejemplo de RStudio. Ya presentamos lo que se encuentra en el panel superior izquierdo: Script

Usamos RStudio para trabajar con R.

Ahora, mire los pequeños botones Ejecutar y Fuente en la esquina superior derecha del panel de secuencias de comandos. Al hacer clic en Ejecutar se ejecuta una línea de código R. Al hacer clic en Fuente se ejecutan todas las líneas de código R en el script (esencialmente es ‘Ejecutar todas las líneas’). Cuando ejecuta el código R, se envía a la Consola , que es el panel inferior izquierdo. Aquí es donde R realmente vive.

Atajos de teclado!
Ejecutar línea: Control+Intro
Ejecutar todas las líneas (Fuente): Control+Shift+Enter
(En una Mac, tanto el Control como el Comando funcionan) La Consola es donde R nos habla. Cuando tenemos suerte, obtenemos resultados allí; en este ejemplo, los resultados de una prueba t (última línea del script). Cuando tenemos menos suerte, aquí también aparecen los Errores o Advertencias.

¡Los errores R dan mucho menos miedo de lo que parecen! Sí, si está utilizando un programa de computadora normal en el que todo lo que hace es hacer clic en algunos botones, entonces obtener un error rojo adecuado que detiene todo es bastante inusual. Pero en programación, los errores son solo una forma en que R se comunica con nosotros.

Vemos errores en nuestro propio trabajo todos los días, son muy normales y no significan que todo esté mal o que debas rendirte. Trate de reformular la palabra Error para que signifique “retroalimentación”, como en “Hola, soy R. No puedo continuar, esta es la retroalimentación que le estoy dando”. Los errores más comunes que verá son similares a “Error: algo no encontrado”. Esto casi siempre significa que hay un error tipográfico o que has escrito algo mal. Además, R distingue entre mayúsculas y minúsculas, por lo que las mayúsculas son importantes (el nombre de la variable lifeExp no es lo mismo que lifeexp ).

La consola solo puede imprimir texto, por lo que cualquier gráfico que cree en su secuencia de comandos aparecerá en el panel Gráficos (abajo a la derecha).

De manera similar, los conjuntos de datos que cargó o creó aparecen en la pestaña Entorno . Cuando hace clic en un conjunto de datos, aparece en un bonito visor que es rápido incluso cuando hay muchos datos. Esto significa que puede echar un vistazo y desplazarse por sus filas y columnas, de la misma manera que lo haría con una hoja de cálculo.

1.3 Primeros pasos

Para comenzar a usar R, debe hacer estas dos cosas:

Cuando abra RStudio por primera vez, también querrá instalar algunos paquetes adicionales para ampliar la funcionalidad básica de R. Puede hacerlo en la pestaña Paquetes (junto a la pestaña Gráficos en la parte inferior derecha de la Figura @ ref(fig:chap01-fig-rstudio)).

Un paquete es solo una colección de funciones (comandos) que no están incluidas en la instalación estándar de R, llamada base-R.

Gran parte de la funcionalidad presentada en este libro proviene de la familia tidyverse de paquetes R (http://tidyverse.org @ tidyverse2019 ). Entonces, cuando vaya a Paquetes, haga clic en Instalar , escriba tidyverse y se instalará toda una colección de paquetes útiles y modernos.

Aunque haya instalado los paquetes tidyverse , aún deberá decirle a R cuando esté a punto de usarlos. Incluimos library(tidyverse) en la parte superior de cada script que escribimos:

library(tidyverse)
── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
✔ ggplot2 3.3.6     ✔ purrr   0.3.4
✔ tibble  3.1.8     ✔ dplyr   1.0.9
✔ tidyr   1.2.0     ✔ stringr 1.4.0
✔ readr   2.1.2     ✔ forcats 0.5.1
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()

Podemos ver que ha cargado 8 paquetes (ggplot2, tibble,tidyr,readr,purrr, dplyr,stringr,forcats), el número detrás del nombre de un paquete es su versión.

Se espera el mensaje “Conflictos” y se puede ignorar con seguridad [^1].

Hay algunos otros paquetes de R que usamos y no son parte del tidyverse, pero los presentaremos a medida que avanzamos. Si tiene mucha curiosidad, diríjase a la sección Recursos del sitio web de HealthyR, que es el mejor lugar para encontrar enlaces actualizados e instrucciones de instalación. Nuestras versiones R y del paquete también se enumeran en el Apéndice.

Referencias

[^1] : Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy McGowan, Romain François, Garrett Grolemund, et al. 2019. “Welcome to the Tidyverse.” Journal of Open Source Software 4 (43): 1686. https://doi.org/10.21105/joss.01686

Simplemente significa que cuando usamos filtero lag, vendrán del paquete dplyr en lugar del paquete stats . Nunca hemos necesitado usar filterand lagfrom stats , pero si lo hace, entonces use los dos puntos dobles, es decir, stats::filter()or stats::lag(), ya que solo filter()usará el dplyr one. ↩︎

1.4 Obtener ayuda

La mejor manera de solucionar los errores de R es copiarlos y pegarlos en un motor de búsqueda (por ejemplo, Google). Buscar en línea también es una excelente manera de aprender cómo hacer cosas nuevas específicas o encontrar ejemplos de código. Debe copiar y pegar soluciones en su secuencia de comandos R para luego modificarlas para que coincidan con lo que está tratando de hacer. Constantemente copiamos código de foros en línea y nuestros propios scripts existentes.

Sin embargo, hay muchas maneras diferentes de lograr lo mismo en R. A veces, buscará ayuda y se encontrará con un código R que no se parece en nada a lo que ha visto en este libro. Los paquetes de tidyverse son relativamente nuevos y usan la tubería ( %>% ) algo que veremos más adelante. Pero los motores de búsqueda a menudo darán prioridad a los resultados más antiguos que utilizan un enfoque más tradicional.

Por lo tanto, las soluciones más antiguas pueden aparecer en la parte superior. No se desanime si ve un código R que se ve completamente diferente a lo que esperaba. Simplemente siga desplazándose hacia abajo o haciendo clic en diferentes respuestas hasta que encuentre algo que le parezca un poco más familiar.

Si está trabajando sin conexión, entonces la pestaña Ayuda integrada de RStudio es útil. Para usar la pestaña Ayuda, haga clic con el cursor en algo de su código (p. ej., read_csv()) y presione F1. Esto le mostrará la definición y algunos ejemplos. F1 puede ser difícil de encontrar en algunos teclados, una alternativa es escribir, por ejemplo, ?read_csv. Esto también abrirá la pestaña Ayuda para esta función.

Sin embargo, la pestaña Ayuda solo es útil si ya sabe lo que está buscando pero no puede recordar exactamente cómo funciona. Para encontrar ayuda sobre cosas que no ha usado antes, lo mejor es buscarlo en Google.

R tiene alrededor de 2 millones de usuarios, por lo que alguien en algún lugar probablemente haya tenido la misma pregunta o problema.

RStudio también tiene un menú desplegable de Ayuda en la parte superior (la misma fila donde encuentra “Archivo”, “Editar”, …). Las cosas más notables en el menú desplegable de Ayuda son las Cheatsheets. Estos dos páginas estrechamente empaquetados incluyen muchas de las funciones más útiles de los tidyversepaquetes. No son particularmente fáciles de aprender, pero son invaluables como ayuda memoria .

1.5 Trabajar en un proyecto

Los archivos en su computadora están organizados en carpetas. Los proyectos de RStudio viven en las carpetas normales de su computadora: marcan el directorio de trabajo de cada proyecto de análisis. Estas carpetas de proyectos se pueden ver o mover de la misma manera que normalmente trabaja con archivos y carpetas en su computadora.

La esquina superior derecha de su RStudio nunca debe decir “Proyecto: (Ninguno)” . Si es así, haga clic en él y cree un nuevo proyecto. Después de hacer clic en Nuevo proyecto, puede decidir si permite que RStudio cree un Nuevo directorio (carpeta) en su computadora. Alternativamente, si sus archivos de datos ya están organizados en una “carpeta existente”, use la última opción.

Cada conjunto de análisis en el que esté trabajando debe tener su propia carpeta y proyecto RStudio. Esto le permite cambiar entre diferentes proyectos sin mezclar los datos, scripts o archivos de salida. Todo se lee o se guarda en el lugar correcto. No más exportar un gráfico y luego revisar los diversos documentos, etc., carpetas en su computadora tratando de averiguar dónde podría haberse guardado su gráfico. Se guardó en la carpeta del proyecto.

1.6 Reiniciar R regularmente

¿Has probado a apagarlo y encenderlo de nuevo? Es vital reiniciar R regularmente. Reiniciar R ayuda a evitar el uso accidental de datos o funciones incorrectas almacenadas en el entorno. ¡Reiniciar R solo lleva un segundo y lo hacemos varias veces al día! Una vez que se acostumbre a guardar todo en un script, siempre estará feliz de reiniciar R. Esto lo ayudará a desarrollar habilidades de análisis de datos sólidas y reproducibles.

Puede reiniciar R haciendo clic en Session -> Restart R(menú superior).

Además, RStudio tiene una configuración predeterminada que ya no se considera la mejor práctica (Figura 1.3 ). Después de instalar RStudio, debe cambiar dos cosas pequeñas pero importantes en Tools -\> Global Options:

1.) Desmarque “Restaurar .RData en Workspace al inicio”

2.) Establezca “Guardar .RData al salir” en Nunca

Esto no significa que no pueda o no deba guardar su trabajo en .RData/.rda archivos. Pero lo mejor es hacerlo conscientemente y cargar exactamente lo que quieres cargar. Permitir que R guarde y cargue todo en silencio por usted también puede incluir datos u objetos rotos.

1.7 Notación a lo largo de este libro

Cuando se mencionan en el texto, los nombres de los paquetes R están en negrita, por ejemplo, ggplot2 , mientras que las funciones, los objetos y las variables se imprimen con una fuente monoespaciada, por ejemplo filter(), mean(), lifeExp. Las funciones siempre van seguidas de corchetes: (), mientras que los objetos de datos o las variables no.

De lo contrario, el código R vive en las áreas grises conocidas como “fragmentos de código”. Las líneas de salida de R comienzan con un doble ##: estos serán los números o el texto que R nos da después de ejecutar el código. R también agrega un contador al comienzo de cada nueva línea; mire los números entre corchetes [] a continuación:

# dos puntos entre dos números crea una secuencia
1001:1017
 [1] 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015
[16] 1016 1017

Recuerde, las líneas de código R que comienzan con # se denominan comentarios. Ya introdujimos los comentarios como notas sobre el código R anteriormente en este capítulo (Sección 1.1 “Ayuda, ¿qué es un script?”), sin embargo, hay un segundo caso de uso para los comentarios.

Cuando haces que el código R sea un comentario, al agregar un # delante de él, se ‘comenta’. Por ejemplo, supongamos que su script R hace dos cosas, imprime números del 1 al 4 y luego números del 1001 al 1004:

# Escribamos números pequeños:
1:4
[1] 1 2 3 4
#Ahora estamos imprimiendo números más grandes:
1001:1004
[1] 1001 1002 1003 1004

Si decide ‘comentar’ la impresión de números grandes, el código se verá así:

# Escribamos números pequeños:
1:4
[1] 1 2 3 4
# Ahora estamos imprimiendo números más grandes:
# 1001:1004

Es posible que incluso desee agregar otro comentario real para explicar por qué se comentó este último:

# Now commented out as not required any more
# Now we're printing bigger numbers:
# 1001:1004

Por supuesto, podría eliminar la línea por completo, pero comentar es útil, ya que es posible que desee incluir las líneas más tarde eliminando el # del comienzo de la línea.

Atajo de teclado para comentar/comentar en varias líneas a la vez: Control+Shift+C   (en una Mac, tanto Control como Command funcionan)