## ``` {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)
##```
## ```{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:
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"))`
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
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.
##``` {r tabla1, results='asis'} ## opciones utilizadas
pandoc.table(dplyr::sample_n(ToothGrowth,10),"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"))
| 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 |
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 |  |
| [numeric] | min < med < max:\ | | |
| | 4.2 < 19.2 < 33.9\ | | |
| | IQR (CV) : 12.2 (0.4) | | |
+-----------+-------------------------+--------------------+----------------------+
| supp\ | 1\. OJ\ | 30 (50.0%)\ |  |
| [factor] | 2\. VC | 30 (50.0%) | |
+-----------+-------------------------+--------------------+----------------------+
| dose\ | Mean (sd) : 1.2 (0.6)\ | 0.50 : 20 (33.3%)\ |  |
| [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")
| 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:
#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:
\(H_o: \mu_{oj} == \mu_{vc}\), \(H_a: \mu_{oj} <> \mu_{vc}\), dose level = 0.5
\(H_o: \mu_{oj} == \mu_{vc}\), \(H_a: \mu_{oj} <> \mu_{vc}\), dose level = 1
\(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