Este compendio de unidades sobre análisis y modelización estadística trata de mostrar una versión aplicada para el tratamiento de los modelos estadísticos más básicos. El objetivo no es mostrar una versión teórica de estos modelos sino una versión aplicada. Se recomienda a los lectores interesado que complementen la teoría de estos modelos con manuales más específicos.
Para poder seguir los contenidos aquí expuestos se recomiendan conocimientos básicos de estadística descriptiva, probabilidad e inferencia estadística, así como las funciones de R
necesarias para llevar a cabo dichos análisis. Sin embargo, se introduce diferentes secciones sobre uso del programa y se desarolla de forma plaicada los conceptos relacionados con el análisis exploratorio de datos y la inferencia básica.
Los modelos contenidos en este manual son:
R
y RStudio
Para poder utilizar el código expuesto en estos materiales es necesario la instalación del programa R
, del programa RStudio
y de diferentes librerías de R
. En los puntos siguientes se describe brevemente cada uno de estos puntos. Se recomienda además la consulta de los materiales electrónicos siguientes para complmentar la formación.
Instalación de R y RStudio. Leer el capítulo de introducción del libro de Childs (2017) e instalar ambos programas descargándolos de sus correspondientes webs:
R
: https://cran.r-project.org/Primeros pasos en R y RStudio. Leer los capítulos 1, 2, y 3 de Childs (2017), el capítulo 4 de Wickham (2015), y los capítulos 4 y 6 de Wickham (2016) para un desarrollo más amplio. Realizar los ejercicios que van a apareciendo a lo largo de los capítulos.
Estructuras de datos. Leer los capítulos 4, 5, 6 y 9 de Childs (2017) para una breve introducción y los capítulos 2 y 3 de Wickham (2015) para completar la información. Realiza los ejercicios que van apareciendo.
Instalación y uso de librerías en RStudio. Leer el capítulo 8 de Childs (2017) e instala las librerías tidyverse, stringr, forcats, lubridate, magrittr, broom y datasets mediante la consola de RStudio. Carga las librerías con el comando library para comprobar que se han instalando de forma correcta.
Creación de proyectos y entornos de trabajo. Leer el capítulo 8 de Wickham (2016). Crea un proyecto para esta unidad, selecciona el directorio de trabajo donde se encuentra situado el proyecto, y guarda el entorno de trabajo.
R
y RStudio
Trabajar y analizar nuestros datos es el objetivo fundamental cuando realizamos cualquier diseño experimental. En R y RStudio hay tres procedimientos:
Crear tu banco de datos dentro de RStudio: Este procedimiento sólo sirve para bancos de datos muy pequeños. En la práctica solemos almacenar nuestros datos en hojas de cálculo o bases de datos lo suficientemente grandes como para impedir este procedimiento.
Utilizar bancos de datos de librerías: Para ejemplificar los procedimientos que utilizaremos a lo largo del curso resulta muy útil utilizar bancos de datos que se encuentran alojados en diferentes librerías de R. Estos ejemplos aparecen en muchas ocasiones en la literatura y dan se utilizan únicamente como muestra de los análisis estadísticos que iremos realizando.
Importar tus datos a R: Esta es la situación más general ya que se trata de cargar los datos recogidos en tu diseño experimental. Lo habitual es que dispongamos de una hoja de cálculo o una base de datos donde hemos ido almacenando toda la información sobre cada uno de los sujetos en todas las variables que hayamos considerado en nuestro experimento.
Importar bases de dato de internet: En los últimos años el uso de bancos de datos que se cargan desde repositorios de internet se ha expandido rápidamente. Los centros de almacenamiento en la nube han crecido como la espuma y muchos investigadores optan por esta opción para mantener copias actualizadas de todos sus datos de investigación. En muchas ocasiones este procedimiento es muy similar al del apartado anterior ya que el procedimiento para incorporar los datos en R es el mismo. Nos da igual que sea un fichero en local (almacenado en nuestro ordenador) o en la nube.
Para realizar esta actividad utilizaremos diferentes ejemplos para mostrar como importar los datos de nuestra investigación utilizando la librería tidyverse.
Antes de cargar nuestros datos de trabajo es recomendable realizar siempre los siguientes pasos:
Crear Poyecto de trabajo: Para poder recuperar todo los análisis o cálculos que realizamos durante una sesión de RStudio es necesario crear un proyecto de trabajo. Para ello (una vez abierto RStudio) debemos ir al menú File > New Project… y asignar un nombre al proyecto. En el momento de creación del proyecto podrás crear un directorio (en local) donde se ira almacenando todo tu trabajo. Crea un proyecto de trabajo con nombre P01MODSTAT. RStudio le asignará la extensión Rproj.
Asignar entorno de trabajo: Una vez creado el proyecto debemos indicar a RStudio donde se debe situar el entorno de trabajo, es decir, el fichero que almacenará nuestros análisis para que podamos recuperarlos en sesiones posteriores. Para ello debemos ir al menú Session > Set Working Directory > To Project Directory. En la ventana inferior derecha de RStudio nos debería aparecer (en la pestaña Files) el proyecto que acabamos de crear.
Crear fichero de sintáxis: Para poder trabajar dentro del entorno de RStudio es necesario crear un fichero de sintaxis que permita ejecutar un conjunto de sentencias de forma conjunta. De esta forma nos evitaremos tendremos que ir escribiendo en la consola de ejecución directamente. Para crear dicho fichero debes seguir el menú File > New File > R Script. Dicho fichero aparecerá sin nombre, de forma que se recomienda guardarlo con un nombre antes de continuar (File > Save As…). Dicho fichero debe aparecer en el directorio de trabajo (ventana inferior derecha de RStudio). Crea un fichero de sintaxis con el nombre Práctica 1. RStudio le asignará la extensión r.
Cuando se acaba la sesión se deben guardar todos los documentos (File > Save All) y cerrar el proyecto (File > Close Project). En se momento deberás guardar también el entorno de trabajo. De esta forma podrás recuperar todos tus ficheros y cálculos cuando abras una nueva sesión de RStudio sin más que ir al menú File > Recent Projects, seleccionar el proyecto de trabajo y cargar el entono de trabajo asociado.
Estos pasos son necesarios para asegurar que todo el trabajo que se realiza se almacena de forma adecuada para poder ser recuperado de forma sencilla. Cambia el nombre de tu proyecto y del fichero de sintaxis para cada una de las prácticas que realizaremos.
En los últimos tiempos se ha puesto de modo la creación de informes directos apartir del código utilizado en Rstudio mediante la creación de documentos específicos. Su puede consulyar una guía sencilla de uso en enlace. Un desaroollo más completo se puede ver en este enlace. También se puede consultar este vídeo.
Vamos a probar tres formas de cargar en R los datos de un diseño experimental. Utilizaremos el fichero de sintaxis creado en el punto anterior y diferentes funciones tanto para la lectura como la visualización de los datos cargados.
En primer lugar, vamos a ver como crear nuestro propio banco de datos a través de la sintaxis de R. Esta opción es poco habitual ya que supondría transcribir todo nuestro banco de datos, pero puede resultar en experimentos muy pequeños donde tenemos pocos sujetos y variables. Para ejemplificar su uso utilizamos los datos del ejemplo1 descritos en el apartado Bancos de datos de ejemplos. Para crear el banco de datos nos ayudaremos de las funciones c() para crear cada una de las variables y data.frame() para combinarlas todas ellas y crear el banco de datos de todos los sujetos.
# Datos de edad
edad <-c(46,57,22,22,28,29,20,25,43,63,49,34,52,28,57,
40,52,24,30,36,33,48,58,50)
# Datos del nivel de colesterol
nivel <-c(3.5,4.5,2.2,2.5,2.3,3.3,1.9,3.0,3.8,4.6,
4.0,3.2,4.0,2.9,4.1,3.2,4.3,2.5,2.6,3.8,3.0,4.2,3.9,3.3)
# Creación de data.frame
datos <- data.frame(edad = edad, nivel = nivel)
# Para visualizar los datos
datos
## edad nivel
## 1 46 3.5
## 2 57 4.5
## 3 22 2.2
## 4 22 2.5
## 5 28 2.3
## 6 29 3.3
## 7 20 1.9
## 8 25 3.0
## 9 43 3.8
## 10 63 4.6
## 11 49 4.0
## 12 34 3.2
## 13 52 4.0
## 14 28 2.9
## 15 57 4.1
## 16 40 3.2
## 17 52 4.3
## 18 24 2.5
## 19 30 2.6
## 20 36 3.8
## 21 33 3.0
## 22 48 4.2
## 23 58 3.9
## 24 50 3.3
Los datos cargados aparecerán en la consola y en la ventana de Evironment (ventana superior derecha del entorno de RStudio). Clicando en esa ventana sobre los datos se abrirá una ventana de visualización de datos.
Hazlo tu mismo: Copia la sintaxis anterior en tu fichero script y ejecuta todas las sentencias. Verifica que puedes acceder a los datos a través de la ventana de Environment.
Muchas de las librerías de R llevan incorporados bancos de datos para mostrar el uso de sus funciones. De hecho, existen librerías que contienen únicamente datos como por ejemplo la librería datasets. El acceso a esos datos se realiza a través de la función data( ), una vez se ha cargado la librería que los contiene. Ejemplificamos su uso con el banco de datos airquality que se encuentra alojado en la librería datasets.
# Cargamos los datos mediante el nombre con que aparece en la librería
data(airquality)
# visualizamos los datos
airquality
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
## 7 23 299 8.6 65 5 7
## 8 19 99 13.8 59 5 8
## 9 8 19 20.1 61 5 9
## 10 NA 194 8.6 69 5 10
## 11 7 NA 6.9 74 5 11
## 12 16 256 9.7 69 5 12
## 13 11 290 9.2 66 5 13
## 14 14 274 10.9 68 5 14
## 15 18 65 13.2 58 5 15
## 16 14 334 11.5 64 5 16
## 17 34 307 12.0 66 5 17
## 18 6 78 18.4 57 5 18
## 19 30 322 11.5 68 5 19
## 20 11 44 9.7 62 5 20
## 21 1 8 9.7 59 5 21
## 22 11 320 16.6 73 5 22
## 23 4 25 9.7 61 5 23
## 24 32 92 12.0 61 5 24
## 25 NA 66 16.6 57 5 25
## 26 NA 266 14.9 58 5 26
## 27 NA NA 8.0 57 5 27
## 28 23 13 12.0 67 5 28
## 29 45 252 14.9 81 5 29
## 30 115 223 5.7 79 5 30
## 31 37 279 7.4 76 5 31
## 32 NA 286 8.6 78 6 1
## 33 NA 287 9.7 74 6 2
## 34 NA 242 16.1 67 6 3
## 35 NA 186 9.2 84 6 4
## 36 NA 220 8.6 85 6 5
## 37 NA 264 14.3 79 6 6
## 38 29 127 9.7 82 6 7
## 39 NA 273 6.9 87 6 8
## 40 71 291 13.8 90 6 9
## 41 39 323 11.5 87 6 10
## 42 NA 259 10.9 93 6 11
## 43 NA 250 9.2 92 6 12
## 44 23 148 8.0 82 6 13
## 45 NA 332 13.8 80 6 14
## 46 NA 322 11.5 79 6 15
## 47 21 191 14.9 77 6 16
## 48 37 284 20.7 72 6 17
## 49 20 37 9.2 65 6 18
## 50 12 120 11.5 73 6 19
## 51 13 137 10.3 76 6 20
## 52 NA 150 6.3 77 6 21
## 53 NA 59 1.7 76 6 22
## 54 NA 91 4.6 76 6 23
## 55 NA 250 6.3 76 6 24
## 56 NA 135 8.0 75 6 25
## 57 NA 127 8.0 78 6 26
## 58 NA 47 10.3 73 6 27
## 59 NA 98 11.5 80 6 28
## 60 NA 31 14.9 77 6 29
## 61 NA 138 8.0 83 6 30
## 62 135 269 4.1 84 7 1
## 63 49 248 9.2 85 7 2
## 64 32 236 9.2 81 7 3
## 65 NA 101 10.9 84 7 4
## 66 64 175 4.6 83 7 5
## 67 40 314 10.9 83 7 6
## 68 77 276 5.1 88 7 7
## 69 97 267 6.3 92 7 8
## 70 97 272 5.7 92 7 9
## 71 85 175 7.4 89 7 10
## 72 NA 139 8.6 82 7 11
## 73 10 264 14.3 73 7 12
## 74 27 175 14.9 81 7 13
## 75 NA 291 14.9 91 7 14
## 76 7 48 14.3 80 7 15
## 77 48 260 6.9 81 7 16
## 78 35 274 10.3 82 7 17
## 79 61 285 6.3 84 7 18
## 80 79 187 5.1 87 7 19
## 81 63 220 11.5 85 7 20
## 82 16 7 6.9 74 7 21
## 83 NA 258 9.7 81 7 22
## 84 NA 295 11.5 82 7 23
## 85 80 294 8.6 86 7 24
## 86 108 223 8.0 85 7 25
## 87 20 81 8.6 82 7 26
## 88 52 82 12.0 86 7 27
## 89 82 213 7.4 88 7 28
## 90 50 275 7.4 86 7 29
## 91 64 253 7.4 83 7 30
## 92 59 254 9.2 81 7 31
## 93 39 83 6.9 81 8 1
## 94 9 24 13.8 81 8 2
## 95 16 77 7.4 82 8 3
## 96 78 NA 6.9 86 8 4
## 97 35 NA 7.4 85 8 5
## 98 66 NA 4.6 87 8 6
## 99 122 255 4.0 89 8 7
## 100 89 229 10.3 90 8 8
## 101 110 207 8.0 90 8 9
## 102 NA 222 8.6 92 8 10
## 103 NA 137 11.5 86 8 11
## 104 44 192 11.5 86 8 12
## 105 28 273 11.5 82 8 13
## 106 65 157 9.7 80 8 14
## 107 NA 64 11.5 79 8 15
## 108 22 71 10.3 77 8 16
## 109 59 51 6.3 79 8 17
## 110 23 115 7.4 76 8 18
## 111 31 244 10.9 78 8 19
## 112 44 190 10.3 78 8 20
## 113 21 259 15.5 77 8 21
## 114 9 36 14.3 72 8 22
## 115 NA 255 12.6 75 8 23
## 116 45 212 9.7 79 8 24
## 117 168 238 3.4 81 8 25
## 118 73 215 8.0 86 8 26
## 119 NA 153 5.7 88 8 27
## 120 76 203 9.7 97 8 28
## 121 118 225 2.3 94 8 29
## 122 84 237 6.3 96 8 30
## 123 85 188 6.3 94 8 31
## 124 96 167 6.9 91 9 1
## 125 78 197 5.1 92 9 2
## 126 73 183 2.8 93 9 3
## 127 91 189 4.6 93 9 4
## 128 47 95 7.4 87 9 5
## 129 32 92 15.5 84 9 6
## 130 20 252 10.9 80 9 7
## 131 23 220 10.3 78 9 8
## 132 21 230 10.9 75 9 9
## 133 24 259 9.7 73 9 10
## 134 44 236 14.9 81 9 11
## 135 21 259 15.5 76 9 12
## 136 28 238 6.3 77 9 13
## 137 9 24 10.9 71 9 14
## 138 13 112 11.5 71 9 15
## 139 46 237 6.9 78 9 16
## 140 18 224 13.8 67 9 17
## 141 13 27 10.3 76 9 18
## 142 24 238 10.3 68 9 19
## 143 16 201 8.0 82 9 20
## 144 13 238 12.6 64 9 21
## 145 23 14 9.2 71 9 22
## 146 36 139 10.3 81 9 23
## 147 7 49 10.3 69 9 24
## 148 14 20 16.6 63 9 25
## 149 30 193 6.9 70 9 26
## 150 NA 145 13.2 77 9 27
## 151 14 191 14.3 75 9 28
## 152 18 131 8.0 76 9 29
## 153 20 223 11.5 68 9 30
Hazlo tu mismo: Copia la sintaxis anterior y ejecútala en tu fichero script. Modifica la sintaxis anterior para poder cargar los bancos de datos esoph, mpg, diamonds, Puromycin y verifica que se han cargado correctamente. Para la carga de datos se deben respetar las mayúsculas - minúsculas del nombre.
Esta es la forma habitual de cargar los datos de nuestro diseño experimental. Aunque se pueden cargar ficheros con diferentes orígenes el más habitual es el formato csv. Este formato es genérico en hojas de cálculo y bases de datos ya que cualquier fichero generado en dichas aplicaciones se puede exportar en formato csv. Antes de cargar los datos debemos revisar el fichero csv para asegurarnos que los formatos numéricos (decimales y miles) corresponden a los utilizados por R. En R los decimales se identifican por punto y con comas como es habitual en muchas hojas de cálculo. Una vez creado el documento csv basta con cambiar las comas por punto para poder ser cargados en R. En este caso utilizaremos ficheros csv ya preparados y alojados en el repositorio Github. Utilizaremos el enlace web del fichero para poder cargar los datos. Para la carga de ficheros externos en formato csv utilizamos la función read_csv(). Dicha función tiene dos parámetros principales:
read_csv(file = nombre, col_tipes = tipos)
Los tipos de variables permitidos son i para variables que contienen números enteros, d para variables que contienen números con decimales, y c para variables con texto o etiquetas. A modo de ejemplo mostramos como cargar el conjunto de datos NCBIRTH800.
# Se recomienda leer la descripción de este conjunto de datos para
# asignar los diferentes tipos de variables. Recordemos que está
# compuesto por 14 variables.
NCBIRTH800 = read_csv(file = "https://goo.gl/mB9Jcn", col_types = "dcddcccdccddcc")
NCBIRTH800
## # A tibble: 800 x 14
## plural sex mage weeks marital racemom hispmom gained smoke drink tounces
## <dbl> <chr> <dbl> <dbl> <chr> <chr> <chr> <dbl> <chr> <chr> <dbl>
## 1 1 1 32 40 1 1 N 38 0 0 111
## 2 1 2 32 37 1 1 N 34 0 0 116
## 3 1 1 27 39 1 1 N 12 0 0 138
## 4 1 1 27 39 1 1 N 15 0 0 136
## 5 1 1 25 39 1 1 N 32 0 0 121
## 6 1 1 28 43 1 1 N 32 0 0 117
## 7 1 2 25 39 1 1 N 75 0 0 143
## 8 1 2 15 42 2 1 N 25 0 0 113
## 9 1 2 37 41 1 8 N 31 0 0 139
## 10 1 2 21 39 1 1 N 28 0 0 120
## # … with 790 more rows, and 3 more variables: tgrams <dbl>, low <chr>,
## # premie <chr>
Hazlo tu mismo: Copia la sintaxis anterior y ejecútala en tu fichero script. Modifica la sintaxis anterior para poder cargar los bancos de datos que aparecen en la tabla siguiente (enlace web y tipos de variables) y verifica que se han cargado correctamente. Nombre Enlace de los datos Tipos de variables:
CHOLEST (https://goo.gl/b5ZAb1) con tipos id
HEADCIR (https://goo.gl/juWJEu) con tipos idd
PCKDATA (https://goo.gl/W8Bfgv) con tipos idd
LSADATA (https://goo.gl/FwMcTu) con tipos idddd
SERUMCHO (https://goo.gl/ghxka2) con tipos iddd
Para el uso de estos materiales hay que instalar difrentes librerías. Para instalarlas se puede ejecutar el código siguiente en la ventana de ejecución de `RStudio:
pkgs <- c('tidyverse', 'stringr', 'forcats', 'lubridate', 'magrittr', 'broom',
'datasets', 'kableExtra', 'mosaic', 'latex2exp', 'pubh', 'moonBook',
'sjlabelled', 'sjPlot', 'nasaweather', 'tidymodels', 'lmtest','alr3',
'reshape2', 'olsrr','ggfortify','mgcv','modelr')
install.packages(setdiff(pkgs, installed.packages()[,"Package"]),
dependencies = TRUE)
Para algún análisis especifíco se utilizará alguna librería accesoria que será cargada con el comando require()
.
Para cargar las librerías podemos utilizar
pkgs <- c('tidyverse', 'stringr', 'forcats', 'lubridate', 'magrittr', 'broom',
'datasets', 'kableExtra', 'mosaic', 'latex2exp', 'pubh', 'moonBook',
'sjlabelled', 'sjPlot', 'nasaweather', 'tidymodels', 'lmtest','alr3',
'reshape2', 'olsrr','ggfortify','mgcv','modelr','MASS','stats')
# Packages loading
invisible(lapply(pkgs, library, character.only = TRUE))
Configuramos además el tema de los gráficos para que tengan un aspecto más limpio y más fácil de exportar en formato pdf o word. Para ellos utilizamos la función theme_set()
.
Todas las ventanas de código tienen disponible un botón de copiar para poder incrustar el texto en nuestro propio documento de trabajo.
Javier Morales, email: j.morales@.umh.es.
Mª Asunción Martínez, email: am.mayoral@umh.es.