Upload
diego-fabian
View
277
Download
8
Embed Size (px)
DESCRIPTION
Introduccion al manejo de R y Shiny
Citation preview
Analisis exploratorio de datos con R
Diego Morales
10 de marzo de 2015
Diego Morales Analisis exploratorio de datos con R
IntroduccionQue es R y donde obtenerlo ?
Que es R?Es un software libre especializado en analisis estadısticos; ademas esun lenguaje de programacion, es decir, no solo realiza innumerablesanalisis y pruebas sino tambien se pueden definir funciones propiasde cada usuario.
Donde obtener R?Este software se lo puede descargar gratuitamente desde : http://cran.r-project.org/bin/windows/base/
Diego Morales Analisis exploratorio de datos con R
IntroduccionArea de trabajo
Diego Morales Analisis exploratorio de datos con R
IntroduccionRStudio
Diego Morales Analisis exploratorio de datos con R
Tipos de Datos y Objetos en RTipos de Datos
Numerico: Son datos que pueden contener numeros reales.
x<- 2
Logico: Son datos que solo permite los valores logicos deverdadero (T) o falso (F).
y<- T
Complejo: Son datos que pueden contener numeros complejos.
Z<- 1+1i
Caracter: Son datos que permiten introducir numero ycualquier tipo de caracter.
Y<- ”Hola”
Nota:Para saber el tipo de dato se utiliza la funcion ”mode()”
Diego Morales Analisis exploratorio de datos con R
Tipos de Datos y Objetos en RTipos de Objetos
Vector: Cadenas unidimensionales de un tipo unico de valores(numericos, caracteres, etc.)
v<- c(1,3,5)
Matrices: Estructura bidimensional donde todos los datosdeben ser del mismo tipo.
m<- matrix(c(1,3,5,7),2,2)
Factores: Este tipo de objeto es fundamental para el analisisestadıstico pues es la forma como se tratan las variablescategoricas.
f<- factor(c(1,2,1,3,1))
Diego Morales Analisis exploratorio de datos con R
Tipos de Datos y Objetos en RTipos de Objetos
Listas: objetos por colecciones de distintos tipos de objetos nonecesariamente de la misma dimension.
lista<- list(f,m,v)
Data Frames: Como una matriz pero pudiendo contenerdistintos tipos de datos. Es lo que clasicamente se ha llamadobase de datos o hoja de datos.
datos<- data.frame(anos=c(1.3,0.4,1.1,2.3,3.1,1.3),tipo=c(2,3,3,1,3,1),edad=c(22,21,34,42,17,43),
sexo=c(”H”,”M”,”H”,”H”,”M”,”H”))
Nota: para saber el tipo de objeto se utiliza la funcion class()”
Diego Morales Analisis exploratorio de datos con R
Lazo FOR, IF
for(i in 1:100)instrucciones
if(consicion)instrucciones
Ejemplov<- c(1,2,1,3,1)for(i in 1 : 5)if(v[i] == 1)v[i] = 0v=0 2 0 3 0
Diego Morales Analisis exploratorio de datos con R
Generar vectores
rep(x,n) : genera n valores iguales a x
seq(a,b,r) : genera numeros desde a hasta b con invremento r
seq(a,b,length=r) se generan r numeros entre a y b,igualmente espaciados.
cbind( x, y, z, ...) : genera una matriz con columnas x, y, z,...
rbind( x, y, z, ...) : genera una matriz con filas x, y, z,...
Diego Morales Analisis exploratorio de datos con R
Generar variables aleatorias
rnorm(n): genera n valores aleatorios de una distribucionnormal estandar.
rnorm(n,a,b): genera n valores aleatorios de una distribucionnormal N(a,b)
runif(n): genera n valores aleatorios de una distribucionuniforme entre 0 y 1.
runif(n,a,b): genera n valores aleatorios de una distribucionuniforme entre a y b
Diego Morales Analisis exploratorio de datos con R
Estadısticos descriptivos
Media: mean(variable)
Mediana: median(variable)
Moda: mad(variable)
Rango Intercuartil: IQR(variable)
Cuartiles: quantile(variable)
Cuartil: quantile(variable,0.25)
Varianza: var(variable)
Desviacion estandar: sd(variable)
Asimetrıa: skewness(variable), library(e1071)
Curtosis: kurtosis(variable),library(e1071)
Frecuencia: table(variable)
Frecuencia acumulada: cumsum(table(variable))
Mınimo y Maximo: min(), max()
Diego Morales Analisis exploratorio de datos con R
Graficos
Dispersion: plot(variable)
Histograma: hist(variable)
Barras: barplot(variable)
Diagrama de caja: boxplot(variable)
Arboles de tallo y hoja: stem(variable)
par(new=TRUE): anade un grafico a uno actual
par(mfrow=c(1,2)): graficos multiples
Diego Morales Analisis exploratorio de datos con R
Importar datos
Desde .txt:read.delim(”datos.txt”, header = TRUE, sep = ” t”)Desde .csv: read.csv(”datos.csv”, header = T, sep = ”; ”)Desde Excel
install.packages(′XLConnect′)library(XLConnect)readWorksheetFromFile(”Nombrearchivo.xlsx”, sheet =”Nombrehoja”)library(”RODBC”)data < −odbcConnectExcel2007(”Nombrearchivo.xlsx”)sqlTables(data)ejemplo1 < −sqlFetch(data, ”Nombrehoja”)odbcCloseAll()
Desde SPSS:read.spss(”datos.sav”, to.data.frame = TRUE),library(foreign)spss.get(′Base1.sav′, datevars =′ variable− fecha′)library(Hmisc)
Diego Morales Analisis exploratorio de datos con R
Importar datos
Desde Access:library(RODBC)bd < −odbcConnectAccess(”bd1.mdb”)datos < −sqlQuery(bd, ”SELECT ∗ FROM tabla2”)
Diego Morales Analisis exploratorio de datos con R
Nombres Data Frame
Cambiar un solo nombre: names(datos) <-gsub(”Nombre”,.otra.cosa”, names(datos))
Cambiar todos los nombres names(datos) <-c(”Nombre1”,”Nombre2”, ”Nombre3”......)
Diego Morales Analisis exploratorio de datos con R
Metodos de Imputacion
pmm Predictive mean matching (any)norm Bayesian linear regression (numeric)
norm.nob Linear regression ignoring model error (numeric)norm.boot Linear regression using bootstrap (numeric)
norm.predict Linear regression, predicted values (numeric)mean Unconditional mean imputation (numeric)
2l.norm Two-level normal imputation (numeric)2l.pan Two-level normal imputation using pan (numeric)
2lonly.mean Imputation at level-2 of the class mean (numeric)2lonly.norm Imputation at level-2 by Bayesian linear regression (numeric)2lonly.pmm Imputation at level-2 by Predictive mean matching (any)
quadratic Imputation of quadratic terms (numeric)logreg Logistic regression (factor, 2 levels)
logreg.boot Logistic regression with bootstrappolyreg Polytomous logistic regression (factor, >= 2 levels)
polr Proportional odds model (ordered, >= 2 levels)lda Linear discriminant analysis (factor, >= 2 categories)
cart Classification and regression trees (any)rf Random forest imputations (any)ri Random indicator method for nonignorable data (numeric)
sample Random sample from the observed values (any)fastpmm Experimental: Fast predictive mean matching using C++
Diego Morales Analisis exploratorio de datos con R
Shiny
Cada aplicacion tiene 2 componentes:
una secuencia de comandos de interfaz de usuario (UI, archivoui.R), que controla el diseno y aspecto de la aplicacion.
una secuencia de comandos del servidor (server.R), quecontiene las instrucciones para construir su aplicacion.
Diego Morales Analisis exploratorio de datos con R
Shiny
Codigo mınimo
Diego Morales Analisis exploratorio de datos con R
Shiny
Ejecutar una aplicacion
Crear una carpeta y colocar en ella los archivos ui.R y server.R
Cargar la libreria shiny
Ejecutar runApp(”nombre carpeta”)
Se utiliza runApp(”nombre”, display.mode = ”showcase”)para mostrar ;as lineas de codigo
Diego Morales Analisis exploratorio de datos con R
Ejemplo Shiny
Diego Morales Analisis exploratorio de datos con R
Ejemplo Shiny
Diego Morales Analisis exploratorio de datos con R
Ejemplo Shiny
Diego Morales Analisis exploratorio de datos con R
Shiny-Interfaz del Usuario
Se utiliza la funcion fluidPage para crear una pantalla que seajusta automaticamente a las dimensiones de la ventana delnavegador del usuario.
Se anade un tıtulo mediante titlePanel(’Tıtulo’)
Se utiliza sidebarLayout() para obtener un diseno de la barralateral, que incluye un panel lateral sidebarPanel() y un panelprincipal mainPanel().
Diego Morales Analisis exploratorio de datos con R
Shiny-Interfaz del Usuario
Diego Morales Analisis exploratorio de datos con R
Shiny-Interfaz del Usuario
Diego Morales Analisis exploratorio de datos con R
Shiny-Interfaz del Usuario
Funciones para dar formato al texto e incluir imagenes
Funcion Descripcionp Define un parrafo
h1 Encabezado de primer nivel
h2 Encabezado de segundo nivel
h3 Encabezado de tercer nivel
h4 Encabezado de cuarto nivel
h5 Encabezado de quinto nivel
h6 Encabezado de sexto nivel
a hyper link
br Salto de lınea
span Porcion de texto con un estilo uniforme
code Formato de bloque de codigo
img Inserta una imagen
strong Texto en negrillas
em Texto en cursiva
Diego Morales Analisis exploratorio de datos con R
Shiny-Interfaz del Usuario
Listas numeradas:
tags$ol(
tags$li("Primer item"),
tags$li("Segundo item"),
tags$li("Tercer item"))
Listas no numeradas:
tags$ul(
tags$li("Primer item"),
tags$li("Segundo item"),
tags$li("Tercer item"))
La funcion hr() adiciona una linea horizontal.
En las funciones de encabezado (h5() por ejemplo), elargumento aling permite alinear al centro (center) y a laderecha (right).
Diego Morales Analisis exploratorio de datos con R
Shiny-Interfaz del Usuario
Estructura funcion span:
span("Texto", style = "color:black")
Para adjuntar una imagen, primero se debe crear una carpetacon nombre: www, dentro de la carpeta donde tenemos losarchivos ui.R y server.R. La sintaxis es la siguiente:
img(src="Nombre.png", height = 100, width = 100)
Estructura para links:
a("Nombre.",href = "http://www.google.com/")
Diego Morales Analisis exploratorio de datos con R
Shiny-Interfaz del Usuario
Diego Morales Analisis exploratorio de datos con R
Shiny-Interfaz del Usuario
Diego Morales Analisis exploratorio de datos con R
Shiny-Diseno de Cuadrıcula
Para obtener una cuadrıcula se deben crear filas y columnas:
Las filas son creadas por la funcion fluidRow ().
Dentro de las filas se crean columnas definidas por la funcioncolumn().
Ancho: entre 1 y 12Offset: ancho de columna para trasladar la columna actualdesde el extremo de la columna anterior.
Diego Morales Analisis exploratorio de datos con R
Shiny-Diseno de Cuadrıcula
Diego Morales Analisis exploratorio de datos con R
Shiny-Diseno de Cuadrıcula
Diego Morales Analisis exploratorio de datos con R
Shiny-Tabsets
Anade pestanas mediante la sintaxis:
tabsetPanel(
tabPanel("Pesta~na 1", "Contenido Pesta~na 1"),
tabPanel("Pesta~na 3", "Contenido Pesta~na 2"),
tabPanel("Pesta~na 2", "Contenido Pesta~na 3")
)
Diego Morales Analisis exploratorio de datos con R
Shiny-Tabsets
Anade pestanas mediante la sintaxis:
tabsetPanel(
tabPanel("Pesta~na 1", "Contenido Pesta~na 1"),
tabPanel("Pesta~na 3", "Contenido Pesta~na 2"),
tabPanel("Pesta~na 2", "Contenido Pesta~na 3")
)
Diego Morales Analisis exploratorio de datos con R
Shiny-Navlist
Anade una lista de navegacion en lugar de pestanas mediante lasintaxis:
navlistPanel(
"Conjunto A",
tabPanel("Componente 1","Contenido 1"),
tabPanel("Componente 2","Contenido 2"),
"Conjunto B",
tabPanel("Componente 3","Contenido 3"),
tabPanel("Componente 4","Contenido 4")
)
Diego Morales Analisis exploratorio de datos con R
Shiny-Navbar Pages
Anade una multiples paginas:
navbarPage("Aplicaciıon Shiny",
tabPanel("Componente 1","contenido 1"),
tabPanel("Componente 2","contenido 2"),
tabPanel("Componente 3","contenido 3"))
Diego Morales Analisis exploratorio de datos con R
Shiny-Navbar Pages
Para anadir sub-niveles:
navbarPage("Aplicaciıon Shiny",
tabPanel("Componente 1","contenido 1"),
tabPanel("Componente 2","contenido 2"),
navbarMenu("Componente 3",
tabPanel("contenido 3.1","contenido 3.1"),
tabPanel("contenido 3.2","contenido 3.2")))
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejercicio
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejercicio
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejercicio
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejercicio
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejercicio
Diego Morales Analisis exploratorio de datos con R
Command Buttons:Acction-Submit
Action
actionButton("action", label = "Accion")
Submit
submitButton("Actualizar")
Diego Morales Analisis exploratorio de datos con R
Command Buttons:Checkbox
Checkbox simple
checkboxInput("checkbox", label = "Opcion A",
value = TRUE)
Grupo checkbox
checkboxGroupInput("checkGroup",
label = h3("Gruopo Checkbox "),
choices = list("Opcion A" = 1,
"Opcion B" = 2,
"Opcion C" = 3),
selected = 1))
Diego Morales Analisis exploratorio de datos con R
Command Buttons:Fecha
Fecha
dateInput("fecha", label = h3("Fecha"),
value = "2015-03-31")
Rango de fechas
dateRangeInput("fechas",
label = h3("Rango de Fechas"),
separator="a")
Diego Morales Analisis exploratorio de datos con R
Command Buttons:Archivo-Texto de Ayuda
Archivo
fileInput("archivo", label = h3("Archivo"))
Texto de Ayuda
helpText("Nota: el texto de ayuda no es realmente
un boton de control, pero proporciona una manera
facil de a~nadir texto, junto a otros botones de
control.")
Diego Morales Analisis exploratorio de datos con R
Command Buttons:Entrada numerica y de texto
Entrada numerica
numericInput("num", label = h3("Entrada numerica"),
value = 1)
Entrada de texto
textInput("texto", label = h3("Entrada de texto"),
value = "Texto...")
Diego Morales Analisis exploratorio de datos con R
Command Buttons:Radio buttons y Select box
Radio buttons
radioButtons("radio", label = h3("Radio buttons"),
choices = list("Opcion 1" = 1, "Opcion 2" = 2,
"Opcion 3" = 3),selected = 1)
Select box
selectInput("select", label = h3("Select box"),
choices = list("Opcion 1" = 1, "Opcion 2" = 2,
"Opcion 3" = 3), selected = 1)
Diego Morales Analisis exploratorio de datos con R
Command Buttons:Sliders
Sliders
sliderInput("slider1", label = h3("Sliders"),
min = 0, max = 200, value = 100),
sliderInput("slider2", h3("Sliders intervalo"),
min = 0, max = 100, value = c(25, 75))
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejercicio
Diego Morales Analisis exploratorio de datos con R
Shiny-Outputs
server.R ui.R DescripcionrenderPlot({}) plotOutput() grafico
renderText({}) textOutput() texto
renderPrint({}) verbatimTextOutput(), imprime cualquiertextOutput(), etc output
renderTable({}) tableOutput() tabla
renderDataTable({}) dataTableOutput() tabla
renderUI({}) uiOutput() inputs Shiny
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejemplo1 Outputs
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejemplo1 Outputs
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejemplo1 Outputs
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejemplo2 Outputs
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejemplo2 Outputs
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejemplo2 Outputs
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejemplo Outputs
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejercicio 1
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejercicio 2
Diego Morales Analisis exploratorio de datos con R
Shiny-Ejercicio 3
Diego Morales Analisis exploratorio de datos con R
Shiny-Exportar
Diego Morales Analisis exploratorio de datos con R
Shiny-Exportar
Diego Morales Analisis exploratorio de datos con R
Shiny-Exportar csv
Diego Morales Analisis exploratorio de datos con R
Shiny-Exportar Excel
Diego Morales Analisis exploratorio de datos con R
Shiny-Mapas
Diego Morales Analisis exploratorio de datos con R
Shiny-Mapas
Diego Morales Analisis exploratorio de datos con R
Shiny-Compartir aplicaciones
Abrir gist.github.comCopiar y pegar el contenido de los archivos ui.R y server.RLos usarios pueden acceder a la aplicacion medianterunGist(”gist number”), donde gist number es el codigo queaparece al final de la direccion de la pagina Gist
Diego Morales Analisis exploratorio de datos con R
Generacion automatica de reportes con R y LATEX
Estructura base para generar un documento en LATEX:
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\begin{document}
\end{document}
Diego Morales Analisis exploratorio de datos con R
Generacion automatica de reportes con R y LATEX
Crear un archivo .Rnw
Insertar la estructura base para generar un documento enLATEX
Redactar informe junto con lineas de codigos de R
Compilar
Diego Morales Analisis exploratorio de datos con R
Generacion automatica de reportes con R y LATEX
Para insertar codigos de R se utilizan chunks que en forma generalse definen por:
<<>>=
Codigo de R
@
Por ejemplo,
<<>>=
data(PlantGrowth)
summary(PlantGrowth)
@
Da como resultado:
Diego Morales Analisis exploratorio de datos con R
Generacion automatica de reportes con R y LATEX
La opcion echo=false oculta el codigo
<<echo=false>>=
data(PlantGrowth)
summary(PlantGrowth)
@
Diego Morales Analisis exploratorio de datos con R
Generacion automatica de reportes con R y LATEX
La opcion results=hide oculta el resultado
<<results=hide>>=
data(PlantGrowth)
summary(PlantGrowth)
@
Diego Morales Analisis exploratorio de datos con R
Generacion automatica de reportes con R y LATEX
La opcion fig=true incluye graficos
\begin{figure}[ht]
\centering
<<echo=false,fig=true>>=
boxplot(weight~group,ylab="Peso")
@
\caption{Boxplot}
\end{figure}
Diego Morales Analisis exploratorio de datos con R
Generacion automatica de reportes con R y LATEX
Primer ejemplo
En este ejemplo se muestra la inclusion de algunos calculos estadısticos enun documento LATEX
> library(MASS)
> data(crabs)
> attach(crabs)
> summary(crabs[,4:7])
FL RW CL CW
Min. : 7.20 Min. : 6.50 Min. :14.70 Min. :17.10
1st Qu.:12.90 1st Qu.:11.00 1st Qu.:27.27 1st Qu.:31.50
Median :15.55 Median :12.80 Median :32.10 Median :36.80
Mean :15.58 Mean :12.74 Mean :32.11 Mean :36.41
3rd Qu.:18.05 3rd Qu.:14.30 3rd Qu.:37.23 3rd Qu.:42.00
Max. :23.10 Max. :20.20 Max. :47.60 Max. :54.60
Tambien se puede incluir un diagrama de caja de la variable FL agrupadamediante la variable sp
B O
1015
20
Figura 1: Boxplot
1
Diego Morales Analisis exploratorio de datos con R
Generacion automatica de reportes con R y LATEX
La opcion results=tex incluye tablas
<<echo=F,results=tex>>=
library(xtable)
g<-lm(weight~group,data=PlantGrowth)
xtable(anova(g),"Analisis de varianza")
@
Diego Morales Analisis exploratorio de datos con R
Generacion automatica de reportes con R y LATEX
La funcion Sexpr inserta resultados numericos dentro del texto
<<echo=F>>=
sw<-shapiro.test(residuals(g))
@
El valor del estadıstico de Shapiro--Wilks es
$W=\Sexpr{round(sw$statistic,3)}$
con $p=\Sexpr{round(sw$p.value,3)}$ por tanto
no rechazamos la hipotesis de normalidad de los errores.
Diego Morales Analisis exploratorio de datos con R