Tiene por objetivo general mostrar conceptos y herramientas detrás de la presentación de análisis de datos de una manera reproducible.
Investigación reproducible (Reproducible Research): es la idea de que el análisis de datos y los argumentos estadÃsticos se publiquen con sus datos y código para que otros puedan verificar los resultados y construir sobre ellos. https://www.coursera.org/course/repdata
Esta presentación usa RStudio y RMarkdown para llevar a cabo el objetivo de la investigación reproducible.
flujo
Veamos las similitudes y diferencias entre R y RStudio:
Disponibles en el CRAN (https://cran.r-project.org/)
En general, la colección de libros USE R! son excelentes.
Es una herramienta de conversión text-a-HTML para escritores web. Markdown te permite escribir usando un formato de texto plano de fácil escritura y lectura, luego convertirlo en un HTML estructurado válido (John Gruber, creador de Markdown)
libros
libros
libros
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
You can also embed plots, for example:
Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.
Énfasis
*itálico* **bold**
_itálico_ __bold__
TÃtulos
# TÃtulo 1
## TÃtulo 2
### TÃtulo 3
Listas
Listas sin orden
* Item 1
* Item 2
+ Item 2a
+ Item 2b
Listas con orden
1. Item 1
2. Item 2
3. Item 3
+ Item 3a
+ Item 3b
Chunks
El código será evaluado e impreso
summary(cars$dist)
summary(cars$speed)
Código inline
Mediante este código podemoa evaluar una función del código de R en el cuerpo del texto
There were `r nrow(cars)` cars studied
Links
Adjunta la dirección http en texto plano o junto a una frase:
http://example.com
[linked phrase](http://example.com)
Imágenes


 # Una animación .gif
Citas
Un amigo decÃa:
> Es mejor dar
> que recibir
Ecuaciones LaTeX Ecuaciones inline
$equation$
Mostrar ecuación
$$ equation $$
Tablas
Aquà pueden encontrar una página que convierte formatos de tablas: LaTeX, HTML, Text, Markdown.
First Header | Second Header
------------- | -------------
Content Cell | Content Cell
Content Cell | Content Cell
| First Header | Second Header |
|---|---|
| Content Cell | Content Cell |
| Content Cell | Content Cell |
Compartir Una vez que han compilado con Knit HTLM, se genera una página web en su directorio de trabajo. Pueden poner esta página en su nube de preferencia (dropbox, googledrive, onedrive, icloud) y compartir el vÃnculo.
En informática, un widget o artilugio es una pequeña aplicación o programa, usualmente presentado en archivos o ficheros pequeños que son ejecutados por un motor de widgets o Widget Engine.
# devtools::install_github("rstudio/leaflet")
library(leaflet)
## Warning: package 'leaflet' was built under R version 3.4.4
m <- leaflet()
m <- addTiles(m) # Se añaden tÃtulos por defecto de OpenStreetMap
m <- addMarkers(m, lng=-78.5089133, lat=-0.208785, popup="Semana de la EstadÃstica, Universidad Central del Ecuador")
m
Dado que leaflet aún no están en el CRAN, suele haber un error con las escalas. Para arreglarlo debes actualizar tu versión de scales, asÃ: update.packages(ask = FALSE, repos = 'http://cran.rstudio.com')
library(dygraphs)
## Warning: package 'dygraphs' was built under R version 3.4.4
dygraph(nhtemp, main = "Temperatura en New Haven") %>%
dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
library(networkD3)
##
## Attaching package: 'networkD3'
## The following object is masked from 'package:leaflet':
##
## JS
data(MisLinks, MisNodes)
forceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
Group = "group", opacity = 0.4)
library(DT)
##
## Attaching package: 'DT'
## The following object is masked from 'package:networkD3':
##
## JS
datatable(iris, options = list(pageLength = 5))
library(threejs)
## Loading required package: igraph
##
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
##
## decompose, spectrum
## The following object is masked from 'package:base':
##
## union
z <- seq(-10, 10, 0.01)
x <- cos(z)
y <- sin(z)
scatterplot3js(x,y,z, color=rainbow(length(z)))
Shiny es un paquete de Rque nos permite hacer aplicaciones dinámicas en la web.
Primero, instalar shiny
install.packages("shiny")
Veamos un ejemplo
library(shiny)
runExample("01_hello")
Tiene dos componentes:
ui.R
library(shiny)
# Se define UI para la aplicación que grafica el histograma
shinyUI(fluidPage(
# TÃtulo de la aplicación
titlePanel("Hello Shiny!"),
# Barra lateral con un slider para el número de clases
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Número de clases:",
min = 1,
max = 50,
value = 30)
),
# Muestra un gráfico con la distribución generada
mainPanel(
plotOutput("distPlot")
)
)
))
El server.R contiene instrucciones que tu comoutador necesita par construir la app. Por ejemplo:
server.R
library(shiny)
# Ae define las instrucciones que el servidor requiere para graficar el histograma
shinyServer(function(input, output) {
# Expresion que genera el histograma. Esta expresion es:
# wrapped es un call a renderPlot para indicar que:
#
# 1) Es "reactive" y por lo lo tanto debe re-ejecutarse automaticamente
# cuando se ingresa el rango
# 2) El tipo de output es un gráfico
output$distPlot <- renderPlot({
x <- faithful[, 2] # Datos de faithfull: tiempo entre erupciones
bins <- seq(min(x), max(x), length.out = input$bins + 1)
# Dibuja el histigrama en el numero de clases especificada
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
})
El server.R es muy simple (de cierta forma), hace cálculos y luego grafica el histograma según el número de clases.
Cremos un directorio llamado App-1 en su directorio de trabajo. Copiamos los código de ui.R y server.R en dos scripts en esta carpeta:
libros
Cargamos la aplicación con runApp("App-1")
setwd("~/Documents/UV/Computacion EstadÃstica/Pres2/")
runApp("App-1")
Si deseo que aparezca el código de ui.R y server.R:
runApp("App-1", display.mode = "showcase")
Para crear aplicaciones, pueden copiar, pegar y modificar las aplicaciones existentes. La galerÃa de shiny contiene varios ejemplos. Algunos de los ejemplos más usados son:
system.file("examples", package="shiny")
runExample("01_hello") # un histograma
runExample("02_text") # tablas y data frames
runExample("03_reactivity") # un ejémplo de resultados dinámicos
runExample("04_mpg") # variables globales
runExample("05_sliders") # barras desplazables
runExample("06_tabsets") # tabbed panels
runExample("07_widgets") # Texto de ayuda y botones
runExample("08_html") # Shiny app construida desde HTML
runExample("09_upload") # Subir archivos
runExample("10_download") # Descargar archivos
runExample("11_timer") # Un timer
Cada una muestra los códigos ui.R y server.R para que puedan usarlos a su conveniencia.
Poner la aplicación en una carpeta pública (dropbox, onedrive,googledrive) como un zip y enviar el link al usuario.
# https://dl.dropboxusercontent.com/u/19384613/App-1.zip # VÃnculo de la carpeta
# install.packages("shiny")
library(shiny)
runApp("App-1")
La limitante de este método es que el usuario debe tener instalado R y shiny en sus computadores.
Otra opción interesante es usar Shinyapps.io. Existen opciones pagadas y libres.
Configurar la cuenta Una vez que crearon la cuenta, deben configurar el paquete shinyapps use SU cuenta. Shinyapps.io genera automáticamente un código token (clave) que el paquete shinyapps debe utilizar para acceder a su cuenta:
libros
Ahora, debemos configurar el paquete shinyapps a tu cuenta de usuario: - Has click en el Ãcono de candado del token:
libros
Aparecerá un comando con el código del token. Debes pegar este comando y ejecutarlo en la consola de RStudio. Esto hace que su configuración haya terminado.
Finalmente, ejecutan la aplicación y:
libros