Inicialización del ambiente de trabajo

Opciones Generales Usadas

## ``` {r setup, include=TRUE}
## Opciones generales que pueden ser cambiadas individualmente en cada uno de
## los trozos de código

knitr::opts_chunk$set(echo = TRUE,     ## TRUE/FALSE o numérico. Indica si se incluye o  
                                       ## no el código en R en la salida a generar
                      comment=NA,      ## '##' caracter Se trata del prefijo a colocar 
                                       ## antes de la salida de las ejecución del código 
                                       ## en R
                      warning=FALSE,   ## Si se muestran las advertencias que se generan
                                       ## durante la ejecución del código R output
                      message=FALSE,
                      error=TRUE,
                      eval=TRUE )      ## Indica si el trozo de código será evaluado
                                       ## Puede usarse un valor lógico (TRUE/FALSE) o un 
                                       ## vector numérico que indica cuáles expresiones 
                                       ## serán evaluadas eval=c(1, 3, 4) o eval=-(4:5))
options(tinytex.verbose = TRUE)
##```

Librerías Requeridas

## ```{r librerias, error=FALSE}
list.of.packages <- c("pander","ggplot2","knitr","dplyr","summarytools")

new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages,repos="https://cloud.r-project.org")


library(pander)
library(ggplot2)
library(knitr)

library(dplyr)
library(summarytools)

##```

Para este ejercicio necesitamos la carga de las siguientes librerías que serán automáticamente instaladas en caso de no disponerlas en la configuración actual de RStudio:

  • pander
  • ggplot2
  • knitr
  • dplyr
  • summarytools

Para listar las librerías que se muestran en el documento se usó el siguiente código R entre líneas de texto

`r gsub("\n","  \n",pandoc.list.return(list.of.packages, style = "bullet"))`

Información de la Sesión

Tanto las librerías requeridas para un proyecto en particular como la información de la sesión es importante para lograr el objetivo de Reproducibilidad de nuestro trabajo. Para garantizar totalmente su reproducibilidad es conveniente utilizar el paquete packrat pata la gestión de dependencias.

sessionInfo()
R version 3.5.3 (2019-03-11)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] summarytools_0.9.5 dplyr_0.8.4        knitr_1.28         ggplot2_3.2.1     
[5] pander_0.6.3      

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.3         plyr_1.8.5         pryr_0.1.4         pillar_1.4.3      
 [5] compiler_3.5.3     base64enc_0.1-3    tools_3.5.3        digest_0.6.24     
 [9] lubridate_1.7.4    evaluate_0.14      lifecycle_0.1.0    tibble_2.1.3      
[13] gtable_0.3.0       checkmate_2.0.0    pkgconfig_2.0.3    rlang_0.4.4       
[17] magick_2.3         yaml_2.2.1         xfun_0.12          withr_2.1.2       
[21] stringr_1.4.0      vctrs_0.2.3        grid_3.5.3         tidyselect_1.0.0  
[25] glue_1.3.1         R6_2.4.1           tcltk_3.5.3        rmarkdown_2.1     
[29] tidyr_1.0.2        purrr_0.3.3        magrittr_1.5       rapportools_1.0   
[33] codetools_0.2-16   matrixStats_0.55.0 scales_1.1.0       backports_1.1.5   
[37] htmltools_0.4.0    assertthat_0.2.1   colorspace_1.4-1   stringi_1.4.6     
[41] lazyeval_0.2.2     munsell_0.5.0      crayon_1.3.4      

Obtención de los Datos

Para este ejercicio usamos el conjunto de datos ToothGrowth disponible en el ambiente R. Este conjunto contiene datos sobre el Efecto de la Vitamina C en el crecimiento de dientes en Conejillos de india. ToothGrowth consiste en 60 registros y 3 atributos (len, supp, dose). Esta información se extrae directamente del conjunto de datos sin necesidad de hacer Cut & Paste. Si el conjunto de datos cambia, automáticamente se ajustan estos valores al regenerar el fichero de salida.

Para esto usamos código R entre las líneas de nuestro documento. A continuación se muestra el código utilizado para lograr este objetivo:

`r dim(ToothGrowth)[1]`     ## cantidad de registros en el conjunto de datos
`r dim(ToothGrowth)[2]`     ## cantidad de atributos
(`r names(ToothGrowth)`)    ## identificación de los atributos o columnas del conjunto
                            ## de datos

Asi que donde dice 60 en el documento, realmente está la primera expresión que se muestra arriba, donde dice 3 está la segunda expresión y donde dice (len, supp, dose) está la tercera expresión. De esta forma podemos evitar errores involuntarios de transcripción.

Al trabajar de esta forma, podemos incluir estadística descriptiva de nuestro conjunto de datos. Inicialmente podemos verlo como una bitácora de la exploración inicial de los datos y después podemos transformarlo en lo que será un artículo a ser publicado en alguna conferencia o revista y podrá ser reproducido posteriormente por nuestro grupo de investigación o por cualquier otro investigador.

En el documento podemos tener muchos trozos de código en R (chunks) y a medida que vamos trabajando podemos cambiar las opciones del chunk para indicar si deseamos que se ejecute, se muestre el resultado, etc. Todo esto lo controlamos indicando en el chunk la opción deseada.

Generación de Tablas

##``` {r tabla1, results='asis'}    ## opciones utilizadas
pandoc.table(dplyr::sample_n(ToothGrowth,10),"Selección de 10 elementos de ToothGrowth")
Selección de 10 elementos de ToothGrowth
len supp dose
23.3 VC 2
14.5 OJ 0.5
17.3 VC 1
23 OJ 2
24.5 OJ 2
5.8 VC 0.5
7 VC 0.5
33.9 VC 2
19.7 OJ 1
29.4 OJ 2
##``` {r tabla2, results="asis"} ## opciones utilizadas
pandoc.table(dplyr::sample_n(ToothGrowth,10),
             "Selección de 10 elementos de TootGrowth con justificación", 
             justify=c("right","center","right"))
Selección de 10 elementos de TootGrowth con justificación
len supp dose
21.5 OJ 0.5
33.9 VC 2
15.5 VC 1
15.2 OJ 0.5
11.2 VC 0.5
4.2 VC 0.5
7 VC 0.5
15.2 VC 1
5.2 VC 0.5
26.4 OJ 1

Análisis Exploratorio de los Datos

En esta sección colocaremos información relacionada con los datos, como por ejemplo distribución de los mismos, si hay valores faltantes, etc.

dfSummary(ToothGrowth, varnumbers=FALSE, plain.ascii = FALSE, style = "grid", 
          graph.magnif = 0.25, valid.col = FALSE, tmp.img.dir = "/tmp", 
          na.col=FALSE, graph.col=TRUE)
### Data Frame Summary  
#### ToothGrowth  
**Dimensions:** 60 x 3  
**Duplicates:** 5  

+-----------+-------------------------+--------------------+----------------------+
| Variable  | Stats / Values          | Freqs (% of Valid) | Graph                |
+===========+=========================+====================+======================+
| len\      | Mean (sd) : 18.8 (7.6)\ | 43 distinct values | ![](/tmp/ds0381.png) |
| [numeric] | min < med < max:\       |                    |                      |
|           | 4.2 < 19.2 < 33.9\      |                    |                      |
|           | IQR (CV) : 12.2 (0.4)   |                    |                      |
+-----------+-------------------------+--------------------+----------------------+
| supp\     | 1\. OJ\                 | 30 (50.0%)\        | ![](/tmp/ds0382.png) |
| [factor]  | 2\. VC                  | 30 (50.0%)         |                      |
+-----------+-------------------------+--------------------+----------------------+
| dose\     | Mean (sd) : 1.2 (0.6)\  | 0.50 : 20 (33.3%)\ | ![](/tmp/ds0383.png) |
| [numeric] | min < med < max:\       | 1.00 : 20 (33.3%)\ |                      |
|           | 0.5 < 1 < 2\            | 2.00 : 20 (33.3%)  |                      |
|           | IQR (CV) : 1.5 (0.5)    |                    |                      |
+-----------+-------------------------+--------------------+----------------------+
##``` {r EDA2, results='asis', error=TRUE,warning=FALSE, message=FALSE}
pandoc.table(descr(ToothGrowth, stats = "common", transpose = TRUE),"Otra mas")
Otra mas
  Mean Std.Dev Min Median Max N.Valid Pct.Valid
dose 1.167 0.6289 0.5 1 2 60 100
len 18.81 7.649 4.2 19.25 33.9 60 100
(stby(data = ToothGrowth, INDICES = ToothGrowth$supp, 
                               FUN = descr, stats = c("mean", "sd", "min", "med", "max"), 
                               transpose = TRUE))
Descriptive Statistics  
ToothGrowth  
Group: supp = OJ  
N: 30  

              Mean   Std.Dev    Min   Median     Max
---------- ------- --------- ------ -------- -------
      dose    1.17      0.63   0.50     1.00    2.00
       len   20.66      6.61   8.20    22.70   30.90

Group: supp = VC  
N: 30  

              Mean   Std.Dev    Min   Median     Max
---------- ------- --------- ------ -------- -------
      dose    1.17      0.63   0.50     1.00    2.00
       len   16.96      8.27   4.20    16.50   33.90
##``` {r EDA5, results='asis', echo = TRUE}
(freq(ToothGrowth$supp))

Frequencies
ToothGrowth$supp
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
OJ 30 50.00 50.00 50.00 50.00
VC 30 50.00 100.00 50.00 100.00
0 0.00 100.00
Total 60 100.00 100.00 100.00 100.00

#Pregunta de Investigación

El propósito de este estudio es investigar el efecto de los niveles de Vitamina C (0.5, 1 and 2 mg) en el crecimiento de los dientes usando dos métodos distintos de introducción de la vitamina (Orange Juice o Ascorbic Acid) en Conejillos de india.

La hipótesis del estudio es:

  1. Existe alguna diferencia en el crecimiento de los dientes dependiendo del método de aplicación usado para cada una de las dosis de Vitamina C?

#Resultado ## Hipótesis 1 Existe alguna diferencia en el crecimiento de los dientes dependiendo del método de aplicación usado para cada una de las dosis de Vitamina C?

Pruebas t-tests fueron usadas para comparar los dos métodos de aplicación (Orange Juice y Ascorbic Acid) para las distintas dosis de Vitamina C:

  1. \(H_o: \mu_{oj} == \mu_{vc}\), \(H_a: \mu_{oj} <> \mu_{vc}\), dose level = 0.5

  2. \(H_o: \mu_{oj} == \mu_{vc}\), \(H_a: \mu_{oj} <> \mu_{vc}\), dose level = 1

  3. \(H_o: \mu_{oj} == \mu_{vc}\), \(H_a: \mu_{oj} <> \mu_{vc}\), dose level = 2

Especificación de las fórmulas

1. $H_o: \mu_{oj} == \mu_{vc}$, $H_a: \mu_{oj} <> \mu_{vc}$, dose level = 0.5

2. $H_o: \mu_{oj} == \mu_{vc}$, $H_a: \mu_{oj} <> \mu_{vc}$, dose level = 1

3. $H_o: \mu_{oj} == \mu_{vc}$, $H_a: \mu_{oj} <> \mu_{vc}$, dose level = 2

Cálculo de la prueba de homogeneidad que se debe ocultar y que su resultado es usado en el documento. Este trozo de código debe estar antes de su referencia en el texto.

Como se llevan a cabo múltiples pruebas de significancia, se aplicará el factor de corrección de Bonferroni para prevenir posibilidades de cometer un error tipo I. La homogeneidad de las varianzas fue verificado usando el test de Bartlett confirmando que las mismas son iguales (F=6.93, p-valor=0.23). La tabla 4 muestra los resultados de las pruebas t.

                         Table 4. Resultados pruebas t (OJ vs VC)
Estadístico df Intervalo de Confianza p-valor p Ajustado Dosis mg
3.17 18 1.77, 8.73 0.005 0.016 0.5
4.03 18 2.84, 9.02 0.001 0.002 1
-0.05 18 -3.72, 3.56 0.964 1 2

El resultado obtenido cuando comparamos el medio de administración de la Vitamina C usando pruebas t en muestras independientes indican que existe una diferencia estadísticamente significativa cuando la dosis de Vitamina C es igual a 0.5 o 1 mg. Los valores ajustados de p para ambos casos son menores que 0.05, por lo tanto rechazamos la hipótesis nula. Además, los intervalos de confianza para dichas dosis no contienen el valor 0. Para el caso de una dosis de 2mg, el valor ajustado de p es mayor que 0.05 y por lo tanto no hay evidencia estadísticamente significativa para rechazar la hipótesis nula. En este caso, el intervalo de confianza contiene el valor 0.


#Sitios de Interés

  1. R Markdown quick Tour (https://rmarkdown.rstudio.com/authoring_quick_tour.html)
  2. R Markdown: The Definitive Guide (https://bookdown.org/yihui/rmarkdown/)
  3. Bookdown: Authoring Books and Technical Documents with R Markdown (https://bookdown.org/yihui/bookdown/)
  4. Chunk options and package options (https://yihui.name/knitr/options/)
  5. RStudio Formats (https://rmarkdown.rstudio.com/formats.html)
  6. LaTeX Journal Article Templates for R Markdown (https://github.com/rstudio/rticles)
  7. YAML Options (https://bookdown.org/yihui/bookdown/yaml-options.html)