Académique Documents
Professionnel Documents
Culture Documents
ceRo de R
Presentación Taller VI Jornadas de Usuarios de R
Comunidad R-Hispano
I http://r-es.org
I @R_Hisp
I Jornadas de Usuarios de R (anual)
I Grupos de interés local
I Grupos de interés temático
2
Finalidad R-es
I Fomentar el avance del conocimiento y uso del lenguaje de
programación R y el desarrollo de la profesión en todas sus
vertientes, especialmente la investigadora, docente y
empresarial.
I Favorecer el estudio y difusión de los conocimientos propios de
la Estadística, análisis de datos y campos afines.
I Elegir a los representantes en los aspectos científicos, técnicos y
administrativos, frente a otras sociedades o Administración
pública, tribunales o comisiones, cuando su presencia sea
requerida.
I Organizar, patrocinar y promover los cursos, congresos o
reuniones propuestos por miembros de R-es y aprobados en
Asamblea General.
I Establecer relaciones con otras sociedades científicas y técnicas
españolas o extranjeras.
3
I Crear y coordinar los grupos de trabajo de R-es.
I
VI Jornadas de Usuarios de R
I Conferencias plenarias
I Comunicaciones orales
I Presentaciones breves
I Talleres
4
Taller R desde el principio
Ponente
I Emilio López Cano
I Dr. Ing. Sistemas de Información, Master Ing. de Sistemas de
Decisión, Graduado en Estadística Aplicada, Diplomado en
Estadística
I Investigador en Universidad Rey Juan Carlos
I Profesor asociado en Universidad de Castilla-La Mancha
I Vocal junta directiva Comunidad R-Hispano
I Vocal AENOR AEN/CTN66/SC3 Métodos Estadísticos
I Formador en la Asociación Española para la Calidad (AEC)
I Experto en Control Estadístico de Procesos y en el software R
I Experiencia en empresas de diversos sectores
I Web personal: http://www.proyectum.es
6
emilio.lopez@urjc.es
+34 665 676 225
Taller
Agenda
Jueves 24 de octubre de 12:00 a 14:00
Lugar
CNTG (Centro de Novas Tecnoloxías de Galicia). Sala ***
Requisitos
Ordenador portátil Linux, Windows o Mac con conexión a Internet.
Taller (cont.)
Materiales
La documentación del taller consiste en un manual en formato pdf con
el contenido de las presentaciones que incluye también la explicación
correspondiente, así como el código y las prácticas a realizar. Se
pueden proporcionar ficheros de datos o código adicionales.
Modalidades
I Taller VI Jornadas R
I Curso In company
I Curso on-line
I Seminario
8
Referencias
IcebreakeR.
http://cran.r-project.org/doc/contrib/Robinson-icebreaker.pdf.
Tutorial de R.
Try R.
http://www.openclipart.org.
Para practicar.
E. L. Cano, J. M. Moguerza, and A. Redchuk.
Six Sigma with R. Statistical Engineering for Process Improvement, volume 36 of Use R!
Springer, New York, 2012.
M. Crawley.
The R Book.
Wiley, 2012.
P. Dalgaard.
Introductory Statistics with R.
Statistics and Computing. Springer, 2008.
A. de Vries and J. Meys.
R For Dummies.
–For dummies. Wiley, 2012.
Referencias (cont.)
J. Verzani.
Getting Started with RStudio.
O’Reilly Media, 2011.
10
¿Preguntas?
11
¿Preguntas?
¡ Empecemos !
11
R desde el principio
Taller VI Jornadas de Usuarios de R
Contenido
Introducción a R
Qué es R
Trabajar con R y RStudio
Trabajar con datos en R
Estructuras de datos
Importación y exportación de datos
Análisis exploratorio de datos
Resúmenes de datos
Representación gráfica de datos
Informes con RStudio
Problema y enfoques
Exportación de resultados
Enfoque reproducible
Markdown
2 Más opciones
Software comercial para análisis de datos
Programas
I SPSS
I Minitab
I StatGraphics
I JMP & SAS
I Stata, Statistica, . . .
I Cualquier paquete estadístico,
incluso hojas de cálculo
3
El proyecto R
http://www.r-project.org/
5
http://cran.r-project.org/
Paquetes – Librerías
7
Task Views
¿Cómo se mantiene R?
I R Foundation
I R Core Team
I R Contributors
I Institute for Statistics and Mathematics of WU
(Wirtschaftsuniversität Wien, Vienna University of Economics and
Business).
9
R Foundation
10
Comunidad R Hispano
http://r-es.org/
I Jornadas (2014: VI
jornadas, Santiago de
Compostela)
I Grupos locales
I Grupos temáticos
I Lista de correo
I Twitter: @R_Hisp
11
Componentes de R
12
Componentes de R
La Consola
12
Componentes de R
12
Componentes de R
Salida gráfica
12
Componentes de R
El historial
12
Componentes de R
El espacio de trabajo
12
Componentes de R
El directorio de trabajo
12
RStudio
13
Práctica 1
Instalación de R y RStudio
Sigue el guión de la práctica en el Capítulo 2 del taller.
14
La consola de R(Studio)
I CTRL + 2 va a >
I Directorio de trabajo
(wd) en título
I Flecha va al wd
I Ayudas: TAB o CTRL +
ESPACIO
I ESC para cancelar
I CTRL + L para limpiar
En la consola podemos introducir expresiones que son evaluadas una a una.
1 + 1
## [1] 2
x <- log(pi)
15
Funciones
log(pi)
## [1] 1.145
str(log)
log()
seq()
## [1] 1
16
Funciones (cont.)
seq
## function (...)
## UseMethod("seq")
## <bytecode: 0x7fcdd2b80170>
## <environment: namespace:base>
17
Práctica 2
Empezando con R
Sigue el guión de la práctica en el Capítulo 2 del taller.
18
El editor de código
I CTRL + 1
I Run
I Source
I Ayudas: TAB o
CTRL + ESPACIO
I Expresiones
I En la misma línea con ;
I Comentarios con #
source("rutina.R")
19
La salida gráfica
El historial
## Listado de objetos
# ls()
## Estructura de un objeto
str(mivariable)
23
El directorio de trabajo
I Ayudas: TAB o
CTRL + ESPACIO
I Buscar carpeta
I Establecer wd
I Mostrar wd
I Manejar ficheros
24
## [1] "/home/emilio/eclipse_workspace/2014_06_SPC_AEC/content/6"
## Correcto:
setwd("C:/micodigo")
setwd("C:\\micodigo")
## Incorrecto:
setwd("C:\micodigo")
25
Librerías y paquetes
I Instalar: Install
I Cargar: marcar casilla
I Buscar
I Ayuda
26
## Cargar paquete
library("qcc")
## Instalar paquete
install.packages("qcc")
## Desinstalar paquete
remove.packages("qcc")
## Desconectar paquete
detach("package:qcc", unload = TRUE)
27
Ayuda
I CTRL+3
I Tecla F1
I Búsqueda
I Viñetas
I Web
I Ejemplos y demos
28
Ayuda – funciones
29
Práctica 3
30
Contenido
Introducción a R
Qué es R
Trabajar con R y RStudio
Trabajar con datos en R
Estructuras de datos
Importación y exportación de datos
Análisis exploratorio de datos
Resúmenes de datos
Representación gráfica de datos
Informes con RStudio
Problema y enfoques
Exportación de resultados
Enfoque reproducible
Markdown
31 Más opciones
Clases y tipos
Estructuras
vector Conjunto de datos del mismo tipo
matrix Vector organizado en filas y columnas
list Lista de objetos
data.frame Conjunto de datos en filas y columnas
32
Clases y tipos
Estructuras
vector Conjunto de datos del mismo tipo
matrix Vector organizado en filas y columnas
list Lista de objetos
data.frame Conjunto de datos en filas y columnas
Clases
numeric Número real
integer Número entero
character Cadena de texto
factor Categorías
logical Verdadero/Falso
32
POSIXct, Date Fecha
Crear vectores
x1 <- c(10, 20, 30); x1
## [1] 10 20 30
x2 <- 1:10; x2
## [1] 1 2 3 4 5 6 7 8 9 10
## [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
x5 <- seq_along(x4); x5
##
33 [1] 1 2 3 4 5
Más vectores
## x <- scan()
miFactor <- factor(1:5, labels = letters[1:5]); miFactor
## [1] a b c d e
## Levels: a b c d e
## [1] a a a b b b c c c d d d e e e
## Levels: a b c d e
## [1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
34
Vectores: longitud y nombres
length(x1)
## [1] 3
1:length(x1)
## [1] 1 2 3
35
Selección en vectores
x1[1]
## semana1
## 10
x1["semana1"]
## semana1
## 10
x1[c(1,3)]
## semana1 semana3
## 10 30
x1[-c(1)]
## semana2 semana3
## 20 30
36
Selección lógica
x1 >= 15
## semana2 semana3
## 20 30
x4[x4 != "IBERICO"]
x4[x4 == "IBERICO"]
Ordenación
x6
## [1] 1 6 6 6 8 6 0 2 6 5
sort(x6)
## [1] 0 1 2 5 6 6 6 6 6 8
rev(sort(x6))
## [1] 8 6 6 6 6 6 5 2 1 0
order(x6)
## [1] 7 1 8 10 2 3 4 6 9 5
38
Operaciones con vectores
x1
x1 + 2
39
x1 x2
## [1] 2 4 6 8 10 7 9 11 13 15
39
Operaciones con vectores
x1 + x3
## [1] 10.0 20.1 30.2 10.3 20.4 30.5 10.6 20.7 30.8 10.9 21.0
mean(x1)
## [1] 20
sqrt(x1)
40
## [,1] [,2]
## [1,] 10 12
## [2,] 20 26
## [3,] 30 34
## [4,] 40 39
miMatriz[1, ]
## [1] 10 12
miMatriz[, 1]
## [1] 10 20 30 40
miMatriz[3, 2]
41 [1] 34
##
Más matrices
## variable1 variable2
## caso1 10 12
## caso2 20 26
## caso3 30 34
## caso4 40 39
rowSums(miMatriz)
colMeans(miMatriz)
## variable1 variable2
## 25.00 27.75
42
Creación de listas
## $matriz
## variable1 variable2
## caso1 10 12
## caso2 20 26
## caso3 30 34
## caso4 40 39
##
## $vector1
## semana1 semana2 semana3
## 10 20 30
##
## [[3]]
## [1] 1 2 3 4 5 6 7 8 9 10
43
Acceso a listas
miLista$vector1 miLista[3]
miLista[[1]] miLista$matriz[, 2]
miLista["vector1"]
## $vector1
## semana1 semana2 semana3
## 10 20 30
44
## tipo peso
## 1 A 10
## 2 A 20
## 3 B 15
## 4 C 13
## 5 C 23
## 6 C 8
str(misDatos)
nrow(misDatos)
##
45 [1] 6
Acceso a datos
misDatos$peso
## [1] 10 20 15 13 23 8
misDatos[3, ]
## tipo peso
## 3 B 15
misDatos$peso < 15
## tipo peso
## 1 A 10
## 4 C 13
## 6 C 8
46
## tipo peso
## 1 A 10
## 4 C 13
## 6 C 8
## tipo peso
## 1 A 15.00
## 2 B 15.00
## 3 C 14.67
misDatos[order(misDatos$peso), ]
## tipo peso
## 6 C 8
## 1 A 10
##
47
4 C 13
## 3 B 15
## 2 A 20
## 5 C 23
Modificar conjuntos de datos
## tipo peso
## 1 A 10
## 2 A 20
## 3 B 15
## 4 C 13
## 5 C 23
## 6 C 8
48
Columnas calculadas
49
Nombres en objetos data.frame
colnames(misDatos)
Valores faltantes
## [1] NA
## [1] 3.75
x[is.na(x)] <- 0; x
## [1] 1 3 0 5 6
mean(x)
## [1] 3
51
Otros valores especiales
NULL
1/0
## [1] Inf
sqrt(-1)
## [1] NaN
1i
## [1] 0+1i
pi
## [1] 3.142
52
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q"
## [18] "r" "s" "t" "u" "v" "w" "x" "y" "z"
LETTERS
## [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q"
## [18] "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
month.name
month.abb
## [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov"
##
53 [12] "Dec"
Conversión entre tipos de datos
x <- c("1", "2", "tres")
str(x)
y <- as.numeric(x)
str(y)
## num [1:3] 1 2 NA
class(y)
## [1] "numeric"
is.numeric(y)
54
## [1] TRUE
str(vectorfechas)
table(vectorfechas)
## vectorfechas
## 01/11/2011 02/11/2011 03/10/2011 03/11/2011 04/10/2011 04/11/2011
## 4 2 2 2 8 1
## 05/10/2011 05/11/2011 06/11/2011 12/11/2011 13/11/2011 16/10/2011
## 1 1 2 1 1 2
## 17/10/2011 18/10/2011 19/10/2011 22/10/2011 23/10/2011 24/10/2011
## 5 3 2 9 20 9
## 25/10/2011 28/09/2011 28/10/2011 29/09/2011 30/09/2011 30/10/2011
## 6 4 1 5 4 3
## 31/10/2011
## 2
## vectornumeromes
## 09 10 11
## 13 73 14
## vectormes
## 2011-09 2011-10 2011-11
## 13 73 14
## vectordiasemana
## domingo jueves lunes martes miércoles sábado viernes
56
## 28 7 18 21 9 11 6
library(ISOweek)
vectorsemana <- ISOweek(vectorfechas)
table(vectorsemana)
## vectorsemana
## 2011-W39 2011-W40 2011-W41 2011-W42 2011-W43 2011-W44 2011-W45
## 13 11 2 39 19 14 2
57
Importación con RStudio
58
59
Importación y exportación – funciones
summary(ejDatos$merma)
60
summary(ejDatos$merma)
ejDatos[is.na(ejDatos$merma), ]
summary(ejDatos$merma)
61
63
Contenido
Introducción a R
Qué es R
Trabajar con R y RStudio
Trabajar con datos en R
Estructuras de datos
Importación y exportación de datos
Análisis exploratorio de datos
Resúmenes de datos
Representación gráfica de datos
Informes con RStudio
Problema y enfoques
Exportación de resultados
Enfoque reproducible
Markdown
64 Más opciones
Explorar variables
65
Explorar variables
head(ejDatos)
tail(ejDatos)
table(ejDatos$defecto)
##
## No Sí
## 53 47
##
## (0.187,0.304] (0.304,0.421] (0.421,0.537] (0.537,0.654] (0.654,0.771]
## 3 14 60 19 4
67
Tablas de frecuencias
## marcaclase frecuencia
## 1 0.15 1
## 2 0.25 2
## 3 0.35 9
## 4 0.45 41
## 5 0.55 40
## 6 0.65 5
## 7 0.75 2
68
Medidas de posición central
mean(ejDatos$merma)
## [1] 0.49
mean(ejDatos$merma)
## [1] 0.49
median(ejDatos$merma)
## [1] 0.4958
#moda
datoshist$mids[which(datoshist$counts == max(datoshist$counts))]
## [1] 0.45
69
Recordemos que si hay valores faltantes no podemos hacer cálculos a menos que indiquemos
que no se tengan en cuenta esas observaciones.
## [1] NA
## [1] 0.4931
70
Medidas de posición
quantile(ejDatos$merma, 0.05)
## 5%
## 0.3371
summary(ejDatos$merma)
summary(ejDatos$manchas)
71
Estratificación
## $maquina1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.188 0.405 0.488 0.483 0.583 0.770
##
## $maquina2
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.418 0.464 0.497 0.497 0.521 0.589
72
Medidas de dispersión
range(ejDatos$merma)
var(ejDatos$merma)
## [1] 0.008367
sd(ejDatos$merma)
## [1] 0.09147
IQR(ejDatos$merma)
## [1] 0.08584
mad(ejDatos$merma)
##
73 [1] 0.06208
Gráficos – Generalidades
Opciones genéricas
I tipo: type – l(lines), p(points), b(both)
I títulos y etiquetas: main, sub, xlab, ylab
Título
●
10
●
8
●
6
Variable
●
4
●
2
2 4 6 8 10
Índice
Subtítulo
75
Histograma
hist(ejDatos$merma)
Histogram of ejDatos$merma
40
30
Frequency
20
10
0
ejDatos$merma
76
Gráfico de caja
datosbp <- boxplot(ejDatos$merma)
●
●
0.7
●
0.6
0.5
0.4
●
●
0.3
●
0.2
77
Identificación de atípicos
datosbp$out
78
Gráfico de barras
barplot(table(ejDatos$manchas))
25
20
15
10
5
0
2 3 4 5 6 7 8 9 10 11 14
79
No
Sí
20
15
10
5
0
2 3 4 5 6 7 8 9 10 11 14
Nº de lechones
80
Gráfico de dispersión
plot(merma ~ temp, data = ejDatos)
abline(lm(ejDatos$merma ~ ejDatos$temp))
●
●
0.7
●
●
●
0.6
● ●
● ●● ●● ●
●
● ●
● ● ●
●
●
● ● ●
●●● ●
● ● ●
● ● ●● ● ● ● ●
0.5
● ●
● ● ●
merma
● ●
● ● ●
● ●
● ● ● ●
● ● ● ●
● ● ● ●
● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ●
● ● ●
● ● ●
0.4
● ●
●
●
●
●
● ●
● ●
0.3
●
0.2
8 10 12 14
temp
81
Estratificación en gráficos
boxplot(merma ~ maquina, data = ejDatos)
0.7
0.6
0.5
0.4
0.3
0.2
maquina1 maquina2
82
Matriz de histogramas
par(mfrow = c(1,2))
tapply(ejDatos$merma, ejDatos$maquina, hist)
10
15
8
Frequency
Frequency
10
6
4
5
2
0
0
0.1 0.3 0.5 0.7 0.40 0.45 0.50 0.55 0.60
X[[1L]] X[[2L]]
83
## $maquina1
## $breaks
## [1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8
##
## $counts
## [1] 1 2 9 14 17 5 2
##
## $density
## [1] 0.2 0.4 1.8 2.8 3.4 1.0 0.4
##
## $mids
## [1] 0.15 0.25 0.35 0.45 0.55 0.65 0.75
##
## $xname
## [1] "X[[1L]]"
##
## $equidist
## [1] TRUE
##
## attr(,"class")
## [1] "histogram"
84
##
## $maquina2
## $breaks
## [1] 0.40 0.42 0.44 0.46 0.48 0.50 0.52 0.54 0.56 0.58 0.60
##
## $counts
## [1] 1 0 8 10 8 10 7 2 3 1
##
## $density
## [1] 1 0 8 10 8 10 7 2 3 1
##
## $mids
## [1] 0.41 0.43 0.45 0.47 0.49 0.51 0.53 0.55 0.57 0.59
##
## $xname
Añadiendo opciones a los gráficos
hist(ejDatos$merma,
breaks = 10,
main = "Histograma de la merma",
xlab = "Peso (kg.)",
ylab = "Densidad",
freq = FALSE,
col = rgb(128/255,182/255,182/255),
border = "white",
bg = "red",
ylim = c(0, 6),
col.lab = rgb(56/255, 56/255, 48/255))
lines(density(ejDatos$merma), lwd = 3,
col = rgb(56/255,56/255,48/255))
85
Histograma de la merma
6
5
4
Densidad
3
2
1
0
Peso (kg.)
86
Práctica 5
87
Contenido
Introducción a R
Qué es R
Trabajar con R y RStudio
Enfoque reproducible
Markdown
Más opciones
88
El Problema
89
Enfoque Copy-paste
I Inconsistencias
I Errores
I Desactualización
I No reproducibilidad
I Cualquier cambio requiere mucho esfuerzo
90
Investigación reproducible
Reproducible Research
The goal of reproducible research is to tie specific instructions to data analysis and experimental
data so that reports can be recreated, better understood and verified
Literate Programming
Literate programming is a methodology that combines a programming language with a
documentation language
91
Enfoque Reproducible
92
Volcar resultados a fichero
sink("miSalida.txt")
x <- rnorm(100)
summary(x)
##
## Shapiro-Wilk normality test
##
## data: x
## W = 0.9902, p-value = 0.6788
sink()
93
Exportación de gráficos
94
Exportación de gráficos - con código
plot(rnorm(100))
dev.off()
95
Contenido
Introducción a R
Qué es R
Trabajar con R y RStudio
Enfoque reproducible
Markdown
Más opciones
96
Markdown en RStudio
97
Formatos de salida
98
Formatos de salida (cont.)
99
‘‘‘{r}
pdensity <- c(10.6817, 10.6040, 10.5709, 10.7858,
10.7668, 10.8101, 10.6905, 10.6079,
10.5724, 10.7736, 11.0921, 11.1023,
11.0934, 10.8530, 10.6774, 10.6712,
10.6935, 10.5669, 10.8002, 10.7607,
10.5470, 10.5555, 10.5705, 10.7723)
‘‘‘
Y este es su histograma:
‘‘‘{r, echo=FALSE}
hist(data = pdensity)
‘‘‘
100
Informe generado (Word)
Y este es su histograma:
101
Presentaciones
102
Control del código
echo Mostrar código en informe
error Mostrar mensajes de error
warning Mostrar mensajes de advertencia
message Mostrar mensajes
eval Evaluar el chunk
fig.align Alineación de los gráficos
fig.width Ancho del gráfico generado (en pulgadas, por defecto 7)
fig.height Alto del gráfico generado (en pulgadas, por defecto 7)
out.width Ancho del espacio que ocupa el gráfico en el informe
out.height Alto del espacio que ocupa el gráfico en el informe
fig.keep Mantener los gráficos en el informe
include Mostrar salida de texto al ejecutar el código
results
103 Forma de mostrar los resultados
Más formatos
I xtable: Este paquete genera tablas y se puede usar en combinación con markdown
I Sweave: para generar documentación en pdf mediante el lenguaje LATEX.
I gtable: vuelca el output como gráficos
I Rhtml: mayor control sobre el código html
I shiny: Aplicaciones web
104
Práctica 6
105
Preguntas
Gracias
emilio.lopez@urjc.es
106
Prácticas
R desde el principio
Contenido
Práctica 1
Práctica 2
Introducción
La consola de R
Componentes de R
Práctica 3
Práctica 4
Práctica 5
Práctica 6
2
P1. Instalación de R y RStudio
Instalación de R y RStudio
I Descarga e instalación de R
I Descarga e instalación de RStudio
I Descarga e instalación de MikTeX (opcional)
Contenido
Práctica 1
Práctica 2
Introducción
La consola de R
Componentes de R
Práctica 3
Práctica 4
Práctica 5
Práctica 6
4
P2. Empezando con R
En esta práctica . . .
Practicaremos expresiones de de R en la consola de R.
Contenido
Práctica 1
Práctica 2
Introducción
La consola de R
Componentes de R
Práctica 3
Práctica 4
Práctica 5
Práctica 6
6
P3. Más fácil con RStudio
En esta práctica . . .
Practicaremos las expresiones de la práctica 1 en RStudio.
Contenido
Práctica 1
Práctica 2
Introducción
La consola de R
Componentes de R
Práctica 3
Práctica 4
Práctica 5
Práctica 6
8
P4. Trabajar con datos
En esta práctica . . .
Practicaremos la importación, creación, acceso y modificación de
datos.
Contenido
Práctica 1
Práctica 2
Introducción
La consola de R
Componentes de R
Práctica 3
Práctica 4
Práctica 5
Práctica 6
10
P5. Descripción de datos con R
En esta práctica. . .
Realizaremos análisis exploratorio de datos básicos
11
Contenido
Práctica 1
Práctica 2
Introducción
La consola de R
Componentes de R
Práctica 3
Práctica 4
Práctica 5
Práctica 6
12
P6. Informes con R
En esta práctica. . .
Realizaremos informes reproducibles en diversos formatos.
13