Anda di halaman 1dari 78

Analisis exploratorio de datos con R

Diego Morales

10 de marzo de 2015

Diego Morales

An
alisis exploratorio de datos con R

Introduccion
Que es R y d
onde obtenerlo ?

Qu
e es R?
Es un software libre especializado en analisis estadsticos; ademas es
un lenguaje de programaci
on, es decir, no s
olo realiza innumerables
analisis y pruebas sino tambien se pueden definir funciones propias
de cada usuario.
D
onde obtener R?
Este software se lo puede descargar gratuitamente desde : http://cran.rproject.org/bin/windows/base/

Diego Morales

An
alisis exploratorio de datos con R

Introduccion

Area
de trabajo

Diego Morales

An
alisis exploratorio de datos con R

Introduccion
RStudio

Diego Morales

An
alisis exploratorio de datos con R

Tipos de Datos y Objetos en R


Tipos de Datos

Numerico: Son datos que pueden contener n


umeros reales.
x<- 2
Logico: Son datos que s
olo permite los valores logicos de
verdadero (T) o falso (F).
y<- T
Complejo: Son datos que pueden contener n
umeros complejos.
Z<- 1+1i
Caracter: Son datos que permiten introducir n
umero y
cualquier tipo de caracter.
Y<- Hola
Nota:Para saber el tipo de dato se utiliza la funcion mode()

Diego Morales

An
alisis exploratorio de datos con R

Tipos de Datos y Objetos en R


Tipos de Objetos

Vector: Cadenas unidimensionales de un tipo u


nico de valores
(numericos, caracteres, etc.)
v<- c(1,3,5)
Matrices: Estructura bidimensional donde todos los datos
deben ser del mismo tipo.
m<- matrix(c(1,3,5,7),2,2)
Factores: Este tipo de objeto es fundamental para el analisis
estadstico pues es la forma como se tratan las variables
categoricas.
f<- factor(c(1,2,1,3,1))

Diego Morales

An
alisis exploratorio de datos con R

Tipos de Datos y Objetos en R


Tipos de Objetos

Listas: objetos por colecciones de distintos tipos de objetos no


necesariamente de la misma dimensi
on.
lista<- list(f,m,v)
Data Frames: Como una matriz pero pudiendo contener
distintos tipos de datos. Es lo que clasicamente se ha llamado
base de datos o hoja de datos.
datos<- data.frame(a
nos=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

An
alisis exploratorio de datos con R

Lazo FOR, IF

for(i in 1:100)instrucciones
if(consicion)instrucciones
Ejemplo
v<- c(1,2,1,3,1)
f or(i in 1 : 5)if (v[i] == 1)v[i] = 0
v=0 2 0 3 0

Diego Morales

An
alisis exploratorio de datos con R

Generar vectores

rep(x,n) : genera n valores iguales a x


seq(a,b,r) : genera n
umeros desde a hasta b con invremento r
seq(a,b,length=r) se generan r n
umeros 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

An
alisis exploratorio de datos con R

Generar variables aleatorias

rnorm(n): genera n valores aleatorios de una distribucion


normal estandar.
rnorm(n,a,b): genera n valores aleatorios de una distribucion
normal N(a,b)
runif(n): genera n valores aleatorios de una distribucion
uniforme entre 0 y 1.
runif(n,a,b): genera n valores aleatorios de una distribucion
uniforme entre a y b

Diego Morales

An
alisis exploratorio de datos con R

Estadsticos 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)
Asimetra: skewness(variable), library(e1071)
Curtosis: kurtosis(variable),library(e1071)
Frecuencia: table(variable)
Frecuencia acumulada: cumsum(table(variable))
Mnimo y Maximo: min(), max()
Diego Morales

An
alisis 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): a
nade un grafico a uno actual
par(mfrow=c(1,2)): graficos m
ultiples

Diego Morales

An
alisis exploratorio de datos con R

Importar datos
Desde .txt:
read.delim(datos.txt, header = T RU E, sep = t)
Desde .csv: read.csv(datos.csv, header = T, sep = ; )
Desde Excel
install.packages(0 XLConnect0 )
library(XLConnect)
readW orksheetF romF ile(N ombrearchivo.xlsx, sheet =
N ombrehoja)
library(RODBC)
data < odbcConnectExcel2007(N ombrearchivo.xlsx)
sqlT ables(data)
ejemplo1 < sqlF etch(data, N ombrehoja)
odbcCloseAll()

Desde SPSS:
read.spss(datos.sav, to.data.f rame = T RU E),
library(foreign)
spss.get(0 Base1.sav 0 , datevars =0 variable f echa0 )
library(Hmisc)
Diego Morales

An
alisis exploratorio de datos con R

Importar datos

Desde Access:
library(RODBC)
bd < odbcConnectAccess(bd1.mdb)
datos < sqlQuery(bd, SELECT F ROM tabla2)

Diego Morales

An
alisis 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

An
alisis exploratorio de datos con R

Metodos de Imputacion

pmm
norm
norm.nob
norm.boot
rm.predict
mean
2l.norm
2l.pan
only.mean
lonly.norm
lonly.pmm
quadratic
logreg
ogreg.boot
polyreg
polr
lda
cart

Predictive mean matching (any)


Bayesian linear regression (numeric)
Linear regression ignoring model error (numeric)
Linear regression using bootstrap (numeric)
Linear regression, predicted values (numeric)
Unconditional mean imputation (numeric)
Two-level normal imputation (numeric)
Two-level normal imputation using pan (numeric)
Imputation at level-2 of the class mean (numeric)
Imputation at level-2 by Bayesian linear regression (numeric)
Imputation at level-2 by Predictive mean matching (any)
Imputation of quadratic terms (numeric)
Logistic regression (factor, 2 levels)
Logistic regression with bootstrap
Polytomous logistic regression (factor, >= 2 levels)
Proportional odds model (ordered, >= 2 levels)
Linear discriminant analysis (factor, >= 2 categories)
Diego Morales trees
An
alisis
exploratorio de datos con R
Classification and regression
(any)

Shiny

Cada aplicacion tiene 2 componentes:


una secuencia de comandos de interfaz de usuario (UI, archivo
ui.R), que controla el dise
no y aspecto de la aplicacion.
una secuencia de comandos del servidor (server.R), que
contiene las instrucciones para construir su aplicacion.

Diego Morales

An
alisis exploratorio de datos con R

Shiny

C
odigo mnimo

Diego Morales

An
alisis exploratorio de datos con R

Shiny

Ejecutar una aplicaci


on
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 c
odigo

Diego Morales

An
alisis exploratorio de datos con R

Ejemplo Shiny

Diego Morales

An
alisis exploratorio de datos con R

Ejemplo Shiny

Diego Morales

An
alisis exploratorio de datos con R

Ejemplo Shiny

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Interfaz del Usuario

Se utiliza la funci
on fluidPage para crear una pantalla que se
ajusta automaticamente a las dimensiones de la ventana del
navegador del usuario.
Se a
nade un ttulo mediante titlePanel(Ttulo)
Se utiliza sidebarLayout() para obtener un dise
no de la barra
lateral, que incluye un panel lateral sidebarPanel() y un panel
principal mainPanel().

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Interfaz del Usuario

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Interfaz del Usuario

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Interfaz del Usuario


Funciones para dar formato al texto e incluir imagenes
Funci
on
p
h1
h2
h3
h4
h5
h6
a
br
span
code
img
strong
em

Descripci
on
Define un parrafo
Encabezado de primer nivel
Encabezado de segundo nivel
Encabezado de tercer nivel
Encabezado de cuarto nivel
Encabezado de quinto nivel
Encabezado de sexto nivel
hyper link
Salto de lnea
Porci
on de texto con un estilo uniforme
Formato de bloque de c
odigo
Inserta una imagen
Texto en negrillas
Texto en cursiva
Diego Morales

An
alisis 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), el
argumento aling permite alinear al centro (center) y a la
derecha (right).
Diego Morales

An
alisis 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 carpeta
con nombre: www, dentro de la carpeta donde tenemos los
archivos 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

An
alisis exploratorio de datos con R

Shiny-Interfaz del Usuario

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Interfaz del Usuario

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Diseno de Cuadrcula

Para obtener una cuadrcula se deben crear filas y columnas:


Las filas son creadas por la funci
on fluidRow ().
Dentro de las filas se crean columnas definidas por la funcion
column().
Ancho: entre 1 y 12
Offset: ancho de columna para trasladar la columna actual
desde el extremo de la columna anterior.

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Diseno de Cuadrcula

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Diseno de Cuadrcula

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Tabsets
A
nade pesta
nas 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

An
alisis exploratorio de datos con R

Shiny-Tabsets
A
nade pesta
nas 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

An
alisis exploratorio de datos con R

Shiny-Navlist
A
nade una lista de navegaci
on en lugar de pesta
nas mediante la
sintaxis:
navlistPanel(
"Conjunto A",
tabPanel("Componente
tabPanel("Componente
"Conjunto B",
tabPanel("Componente
tabPanel("Componente
)

1","Contenido 1"),
2","Contenido 2"),
3","Contenido 3"),
4","Contenido 4")

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Navbar Pages

A
nade una multiples paginas:
navbarPage("Aplicaci
on Shiny",
tabPanel("Componente 1","contenido 1"),
tabPanel("Componente 2","contenido 2"),
tabPanel("Componente 3","contenido 3"))

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Navbar Pages
Para a
nadir 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

An
alisis exploratorio de datos con R

Shiny-Ejercicio

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejercicio

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejercicio

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejercicio

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejercicio

Diego Morales

An
alisis exploratorio de datos con R

Command Buttons:Acction-Submit
Action
actionButton("action", label = "Acci
on")
Submit
submitButton("Actualizar")

Diego Morales

An
alisis exploratorio de datos con R

Command Buttons:Checkbox
Checkbox simple
checkboxInput("checkbox", label = "Opci
on A",
value = TRUE)
Grupo checkbox
checkboxGroupInput("checkGroup",
label = h3("Gruopo Checkbox
choices = list("Opci
on A" =
"Opci
on B" =
"Opci
on C" =
selected = 1))

Diego Morales

An
alisis exploratorio de datos con R

"),
1,
2,
3),

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

An
alisis 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
f
acil de a~
nadir texto, junto a otros botones de
control.")

Diego Morales

An
alisis exploratorio de datos con R

Command Buttons:Entrada numerica y de texto


Entrada numerica
numericInput("num", label = h3("Entrada num
erica"),
value = 1)
Entrada de texto
textInput("texto", label = h3("Entrada de texto"),
value = "Texto...")

Diego Morales

An
alisis exploratorio de datos con R

Command Buttons:Radio buttons y Select box


Radio buttons
radioButtons("radio", label = h3("Radio buttons"),
choices = list("Opci
on 1" = 1, "Opci
on 2" = 2,
"Opci
on 3" = 3),selected = 1)
Select box
selectInput("select", label = h3("Select box"),
choices = list("Opci
on 1" = 1, "Opci
on 2" = 2,
"Opci
on 3" = 3), selected = 1)

Diego Morales

An
alisis 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

An
alisis exploratorio de datos con R

Shiny-Ejercicio

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Outputs

server.R
renderPlot({})
renderText({})
renderPrint({})
renderTable({})
renderDataTable({})
renderUI({})

ui.R
plotOutput()
textOutput()
verbatimTextOutput(),
textOutput(), etc
tableOutput()
dataTableOutput()
uiOutput()

Diego Morales

Descripci
on
grafico
texto
imprime cualquier
output
tabla
tabla
inputs Shiny

An
alisis exploratorio de datos con R

Shiny-Ejemplo1 Outputs

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejemplo1 Outputs

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejemplo1 Outputs

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejemplo2 Outputs

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejemplo2 Outputs

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejemplo2 Outputs

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejemplo Outputs

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejercicio 1

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejercicio 2

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Ejercicio 3

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Exportar

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Exportar

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Exportar csv

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Exportar Excel

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Mapas

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Mapas

Diego Morales

An
alisis exploratorio de datos con R

Shiny-Compartir aplicaciones
Abrir gist.github.com
Copiar y pegar el contenido de los archivos ui.R y server.R
Los usarios pueden acceder a la aplicaci
on mediante
runGist(gist number), donde gist number es el codigo que
aparece al final de la direccion de la pagina Gist

Diego Morales

An
alisis 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

An
alisis 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 en
LATEX
Redactar informe junto con lineas de c
odigos de R
Compilar

Diego Morales

An
alisis exploratorio de datos con R

Generacion automatica de reportes con R y LATEX


Para insertar codigos de R se utilizan chunks que en forma general
se definen por:
<<>>=
C
odigo de R
@
Da como resultado:
Por ejemplo,
<<>>=
data(PlantGrowth)
summary(PlantGrowth)
@

Diego Morales

An
alisis exploratorio de datos con R

Generacion automatica de reportes con R y LATEX

La opcion echo=false oculta el c


odigo

<<echo=false>>=
data(PlantGrowth)
summary(PlantGrowth)
@

Diego Morales

An
alisis 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

An
alisis 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

An
alisis exploratorio de datos con R

Generacion automatica de reportes con R y LATEX

Primer ejemplo
En este ejemplo se muestra la inclusi
on de algunos calculos estadsticos en
un documento LATEX
>
>
>
>

library(MASS)
data(crabs)
attach(crabs)
summary(crabs[,4:7])

FL
Min.
: 7.20
1st Qu.:12.90
Median :15.55
Mean
:15.58
3rd Qu.:18.05
Max.
:23.10

RW
Min.
: 6.50
1st Qu.:11.00
Median :12.80
Mean
:12.74
3rd Qu.:14.30
Max.
:20.20

CL
Min.
:14.70
1st Qu.:27.27
Median :32.10
Mean
:32.11
3rd Qu.:37.23
Max.
:47.60

CW
Min.
:17.10
1st Qu.:31.50
Median :36.80
Mean
:36.41
3rd Qu.:42.00
Max.
:54.60

10

15

20

Tambien se puede incluir un diagrama de caja de la variable FL agrupada


mediante la variable sp

Figura 1: Boxplot

Diego Morales

An
alisis 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),"An
alisis de varianza")
@

Diego Morales

An
alisis 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 hip
otesis de normalidad de los errores.

Diego Morales

An
alisis exploratorio de datos con R