Los Datos Con R
Los Datos Con R
http://www.r-project.org/
¿Qué es R?
Entonces… ¿qué es S?
Características de R
• Sintaxis similar a S.
• Semántica parecida a S.
Características de R
Grandes ventajas de R
Desventajas
• Tecnología ”vieja”
• Sin sistema de gráficos en 3D integrado
• Funcionalidad basada en sus usuarios
• Los objetos deben estar en la memoria RAM
• No es ideal para todo
• Hay una gran variedad de herramientas
nuevas pero puede llegar ser más generales
Análisis de datos con R
Historia e introducción al R
Diseño
• Sintaxis
• Selección de variables
Documentación básica
• An introduction to R
• Writing R Extensions
• R Data Import/Export
• R Internals
Introducción al lenguaje
Obteniendo ayuda
• Listas de distribución.
• Stackoverflow.
Análisis de datos con R
Obteniendo ayuda
help( ) - ?
example( )
help.search( ) - ??
library(help = ” ”)
vignette( )
Análisis de datos con R
Obteniendo ayuda
¿Preguntas?
• Experimentar un poco.
Tipo de objetos en R
• Objetos del lenguaje: llamadas, expresiones,
nombres.
Operaciones
Operaciones
• Ordenar vectores
Análisis de datos con R
Objetos y tipos de datos
Operaciones
• Secuencias determinísticas.
Objetos
Objetos
• character
• numeric
• integer
• complex
• logical
Análisis de datos con R
Objetos y tipos de datos
Objetos
El objeto más básico es un vector
Atributos
Impresión de objetos
Creación de vectores
Mezcla de objetos
Coerción explícita
• as.numeric( )
• as.logical( )
• as.character( )
• as.integer( )
Análisis de datos con R
Objetos y tipos de datos
Matrices
• Las matrices es el siguiente tipo de objeto
que tenemos, estos son vectores con un
atributo de dimensión. La dimensión es un
atributo que es un vector entero de tamaño 2:
(nrow, ncol)
cbind y rbind
Listas
Factores
Valores faltantes
Dataframes
Dataframes
Dataframes
Dataframes
Retomando el tema de
las operaciones básicas
binarias:
suma, resta: +, -
multiplicación, división: *, /
módulo %%
exponenciación ^ **
división entera %/%
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
unarias:
negación -
lógicas:
AND lógico: & &&
OR lógico: | ||
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
La precedencia
Reglas de precedencia
Operaciones vectorizadas
Subsetting de matrices
Utilizamos la notación:
matriz[x, y]
matrix[ ,y]
matrix[x, ]
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Subsetting de listas
Utilizamos la notación:
lista[ ]
Emparejado parcial
NA’s
NA’s
Leer datos
Leer datos
• read.table, read.csv
• readLines
• source
• dget
• load
• unserialize
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Escribir datos
• write.table
• writeLines
• dump
• dput
• save
• serialize
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
read.table
read.table
read.csv, read.csv2,
read.fortran, read.socket
son formas especializadas
de read.table que ya tienen
parámetros
preestablecidos.
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
read.table
• file
• header
• sep
• colClasses
• nrows
• comment.char
• skip
• stringsAsFactors
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
read.table
read.table
Por default:
read.table
read.table
• Usar el col.Classes.
read.table
• tamaño de la memoria
• aplicaciones en uso
• usuarios al mismo tiempo
• sistema operativo
• ¿32 ó 64 bits?
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Cálculo de memoria:
Escribiendo datos
Escribiendo datos
Estructuras de control
Estructuras de control
Estructura de control: if
if(condicion){
## operaciones
} else if(condicion2){
## otra operacion
}else{
## otra operación
}
Análisis de datos con R
Estructuras de control
Usos válidos
Análisis de datos con R
Estructuras de control
if(condición1) {
# operaciones
}
if(condición2){
# operaciones
}
Análisis de datos con R
Estructuras de control
Estructura de
control: for
for(i in 1:10) {
print(i)
}
Análisis de datos con R
Estructuras de control
Estructura de
control: for
for(iterador) {
# operaciones
}
Análisis de datos con R
Estructuras de control
Por supuesto,
también funciona
con vectores de
números
Análisis de datos con R
Estructuras de control
También existe el
clásico bucle
anidado con for:
Estructura de
control: while
Análisis de datos con R
Estructuras de control
Estructura de control:
repeat y break
repeat{
# operaciones
if(condición) {
break
}
else {
# operaciones
}
}
Análisis de datos con R
Estructuras de control
for(iterador){
if(condición){
# se salta si
# cumple la
# condición
next
}
# operaciones
}
Análisis de datos con R
Estructuras de control
Recordemos:
Funciones
Definición de las
funciones
Programación en R
Funciones
Argumentos de funciones
Argumentos de funciones
Argumentos de funciones
Argumentos
coincidentes
Coincidencia exacta
Coincidencia parcial
Coincidencia por
posición
Programación en R
Funciones
La evaluación de los
argumentos de una función
son evaluados de manera
”floja”, es decir, solo cuando
se necesitan.
Programación en R
Funciones
Evaluación floja
Programación en R
Funciones
El argumento ”…”
Programación en R
Funciones
El argumento ”…”
El argumento ”…”
Programación en R
Funciones
El argumento ”…”
Funciones *apply
Funciones *apply
Gráficos base
En esta lección cubriremos lo
básico relativo al sistema base o
tradicional de graficación de R.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
La función plot( )
La función más básica para
traficar es la función plot( ), esta
forma la base de una gráfica y a
partir de esta podemos construir
gráficas más complejas
añadiendo desde líneas y puntos,
hasta poner leyendas.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
La función
plot( )
plot( ) es una función
genérica, es decir que la
función que lleva a cabo
depende del tipo de
objeto con el que es
llamado. Por ejemplo, si
lo llamamos con dos
vectores obtenemos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
La función
plot( )
Si quisiéramos cambiar
el tipo de caracter,
solamente tenemos que
modificar el parámetro
pch=”X” para especificar
el carácter que usará
para graficar los puntos
que queremos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
La función
plot( )
Esta función funciona por
etapas, es decir que
podemos construir nuestra
gráfica en etapas dándole
al sistema una serie de
comandos, por ejemplo,
para comenzar podríamos
querer una gráfica vacía
con solamente ejes:
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
La función
plot( )
Con esto ya tenemos
una gráfica vacía lista
para la siguiente etapa,
en nuestro caso,
añaderemos algunos
puntos y los
graficaremos encima de
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
La función
plot( )
Una vez hecho esto,
procederemos a usar la
función lm para que
guarde un modelo lineal
en el objeto mi_linea y
lo graficaremos
utilizando la función
abline y ese objeto.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Si observamos el
objeto mi_linea,
podemos ver que
este objeto tiene
dentro de sí la
fórmula con que se
llamó y además los
valores de hacer
una regresión lineal
con los tres puntos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Si observamos el
objeto mi_linea,
podemos ver que
este objeto tiene
dentro de sí la
fórmula con que se
llamó y además los
valores de hacer
una regresión lineal
con los tres puntos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Al hacer esta
regresión, nos
quedaría la
función:
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Es importante
observar cómo
estamos usando
por primera vez,
una función que
regresa un modelo
y que recibe como
argumento una
fórmula.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
lm recibe un argumento
llamado formula que se
lee así: y explicado por
x, y lo que hace lm es
intentar ajustar un
modelo de regresión
lineal a y con los valores
que tenga de x. al
ejecutarse lm, este
regresa los coeficientes
de la regresión
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Al ejecutarse lm,
este regresa los
coeficientes de la
regresión y el
objeto en donde
se guarda esto
es de clase lm,
i.e. un modelo
lineal.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Continuando con
nuestra gráfica,
usando la función
lines, podemos
graficar una línea
con ella, los
argumentos son un
vector de valores x
y otro de valores y:
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Por supuesto,
podemos
cambiar también
el color de la
línea de nuestra
gráfica con el
parámetro
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
plot() como ya
dijimos, es una
función genérica, por
lo que también
podemos pedir que
nos grafique un
dataframe completo,
por ejemplo iris
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
o puede tomar
columnas para
graficarlas:
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Podemos
guardar nuestra
gráfica, utilizando
la función Export
en la parte de
gráficos de
RStudio.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
• pdf(”archivo.pdf”)
• png(”archivo.png”)
• jpeg(”archivo.jpg”)
• postscript(”archivo.ps”)
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Resumiendo,
Todas estas tienen
tenemos ya varias
parámetros
funciones:
particulares que
pueden ayudarnos a
plot( )
modificar la estética
points( )
de la gráfica
abline( )
lines( )
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Podemos especificar:
• fuentes
• colores
• estilos de línea
• ejes
• líneas de referencia
Histogramas y
gráficas de
densidades
Como el histograma no
nos puede dar una
visión general,
podemos poner un
histograma encima
para observar cómo se
observa la densidad.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Gráfica de densidad
por kernel
Gráfica de
densidad por
kernel
Si pasamos esto
a la función plot,
obtenemos
entonces:
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Gráficas de
puntos
Podemos usar la
función
dotchart( ) para
crear una gráfica
de puntos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Gráficas de
puntos
Graficamos
entonces por
nombre de carros
los galones por
millas.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Boxplots
Estas gráficas
nos dan una idea
de cómo se está
comportando la
dispersión de los
datos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Boxplots
Estas gráficas
nos dan una idea
de cómo se está
comportando la
dispersión de los
datos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos
Boxplots
Podemos
cambiar los
parámetros de
los títulos y
etiquetas para los
ejes.
Programación avanzada y sistema de gráficos
Colores en el sistema de gráficos
Colores
1. índice.
2. nombre.
3. valor hexadecimal.
Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos
Colores
1. rainbow(n)
2. heat.colors(n)
Se pueden utilizar
3. topo.colors(n)
funciones específicas
4. cm.colors(n) y
para crear vectores
5. colors( )
de colores:
Programación avanzada y sistema de gráficos
Creación de gráficas en 3D
rgl
install.packages(”rgl”,
dependencies = TRUE)
Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos
rgl
Uso de plot3d
Los podemos
crear con la
función rnorm
Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos
Finalmente graficamos
utilizando la función
plato3d( ), esta función
nos permitirá
interactuar con la
perspectiva y poder
mover el ángulo de
vista de tal manera que
podamos observar
nuestros puntos.
Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos
También es
posible, usar otro
tipo de formas
para dibujar los
puntos, por
ejemplo,
podemos usar
líneas:
Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos
O incluso
esferas:
Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos
snapshot3d( )
Programación avanzada
Expresiones regulares
Expresiones regulares
Expresiones regulares
Expresiones regulares
Expresiones regulares
Expresiones regulares
grep( )
La llamada a grep
se hace de la
siguiente manera:
grep(patrón, x)
Programación avanzada
Expresiones regulares
grep( )
donde x es un vector de
cadenas, si x tiene n
cadenas, entonces
grep(patrón, x) nos
regresará un vector.
Programación avanzada
Expresiones regulares
grep( )
nchar( )
La función nchar()
encuentra la
longitud de una
cadena.
Programación avanzada
Expresiones regulares
paste( …)
paste concatena
varias cadenas,
regresando una
única cadena.
Programación avanzada
Expresiones regulares
sprintf( …)
Esta función
ensambla una
cadena de las
partes que la
conforman de
manera formateada.
Programación avanzada
Expresiones regulares
substring(x, inicio,
término)
La función
substring, extrae
una subcadena de
la cadena que le
pasemos como
parámetro inicial.
Programación avanzada
Expresiones regulares
strsplit(x, cadena
divisoria)
regexpr(patrón,
texto)
Esta función
encuentra la posición
del caracter de la
primera instancia del
patrón dentro del
texto.
Programación avanzada
Expresiones regulares
gregexpr(patrón,
texto)
Esta función
encuentra la posición
del carácter de cada
instancia del patrón en
el texto o cadena.
Programación avanzada
Expresiones regulares
help(regexp)
Las expresiones
regulares pueden ser
muy ricas y complicadas,
explicar cada detalle de
estas está más allá del
objetivo de este curso,
pero podemos consultar
la página del manual.
Programación avanzada
Expresiones regulares
help(regexp)
Expresiones
regulares:
Expresiones
regulares:
. en una expresión
regular en R, significa
que no importa qué
carácter simple esté.
Programación avanzada
Expresiones regulares
Expresiones
regulares:
¿qué pasa si
queremos buscar un
punto dentro de una
cadena?
Programación avanzada
Graficación con ggplot2
ggplot2
ggplot2
ggplot2
qplot
qplot
Haremos diferentes
gráficos sencillos utilizando
diferentes geoms,
aprenderemos cómo
mapear variables a
atributos estéticos como
colores, tamaños y formas
Programación avanzada
Graficación con ggplot2
qplot
qplot
usar condicionamientos
para dividir subconjuntos de
nuestros datos y modificar
algunos aspectos de la
apariencia de nuestros
gráficos.
Programación avanzada
Graficación con ggplot2
diamonds
Usaremos el conjunto
de datos diamonds,
este consiste en los
precios e información
de la calidad de
aproximadamente 54
mil diamantes y se
incluye en el paquete
ggplot2.
Programación avanzada
Graficación con ggplot2
diamonds
Podemos entonces
tomar una muestra
aleatoria de este
conjunto de datos que
llamaremos dchico.
Programación avanzada
Graficación con ggplot2
qplot( )
qplot( )
ahora podemos
cambiar un poco esto
utilizando el dataframe
dchico utilizando ese
nombre de dataset
como argumento:
Programación avanzada
Graficación con ggplot2
qplot( )
Podemos observar
que hay cierta
correlación y algunas
”estrías”, la relación
parece exponencial,
por lo que llevaremos
a cabo una
transformación a las
variables:
Programación avanzada
Graficación con ggplot2
qplot( )
Se puede observar
también que hay
sobre graficación de
puntos, por lo que no
podemos llevar a cabo
conclusiones tan
pronto.
Programación avanzada
Graficación con ggplot2
qplot( )
Los argumentos
también pueden ser
combinaciones de
variables ya existentes
Programación avanzada
Atributos estéticos:
Graficación con ggplot2
color
Atributos estéticos:
shape
O también el tipo de
corte traficando un
punto diferente de
acuerdo al tipo de
corte que estemos
graficando.
Programación avanzada
Graficación con ggplot2
Atributos estéticos:
alpha
alpha
Atributos estéticos:
shape
Consideraciones estéticas
Consideraciones estéticas
Atributos estéticos:
faceting
geoms
geoms
geoms
geom = ”boxplot”
produce una gráfica
de caja para sintetizar
la distribución de los
datos.
Programación avanzada
Graficación con ggplot2
geoms
geom = ”boxplot”
produce una gráfica
de caja para sintetizar
la distribución de los
datos.
Programación avanzada
Graficación con ggplot2
geoms
geoms
Introducción
Programación avanzada
Simulación
Introducción
en esta lección
aprenderemos qué tipo de
funciones podemos acceder
y además cómo podemos
utilizarlas para llevar a cabo
simulaciones.
Programación avanzada
Simulación
which.min( ) y which.max( )
índice del valor mínimo y máximo
round( ) Redondea
Funciones entero más cercano.
matemáticas floor( ) Redondeo al
entero abajo
Los primeros tipos de ceiling( ) Redondeo al
funciones que veremos entero arriba
son las matemáticas, y factorial( ) Función
son las siguientes: factorial
Programación avanzada
Simulación
Para la multiplicación de
matrices, utilizamos el
operador %*%
Programación avanzada
Simulación
Funciones para
álgebra lineal
La función solve,
resuelve sistemas de
ecuaciones lineales, e
incluso encontrar
matrices inversas, por
ejemplo, supongamos
que tenemos el
siguiente sistema lineal:
Programación avanzada
Simulación
Funciones para
álgebra lineal
Este se puede
resolver de forma
matricial de la
siguiente manera:
Programación avanzada
Simulación
Funciones para
álgebra lineal
En R lo haríamos así:
La segunda llamada a
solve nos muestra que
sólo queremos la
inversa de x.
Programación avanzada
Simulación
Funciones para
álgebra lineal lineal
Y podemos
comprobarlo de la
siguiente manera:
Programación avanzada
Simulación
• t( ) matriz transpuesta
• qr( ) descomposición QR
• chol( ) descomposición
Funciones para álgebra de Cholesky
lineal • det( ) determinante
• eigen( ) eigenvalores,
También tenemos otras eigenvectores
funciones que pueden ser • diag( ) Extrae la diagonal
muy útiles para la de una matriz cuadrada.
interacción con matrices. • sweep( ) Operaciones de
barrido en análisis
numérico.
Programación avanzada
Simulación
Funciones para
álgebra lineal
También tenemos
otras funciones que
pueden ser muy útiles
para la interacción con
matrices.
Programación avanzada
Simulación
Funciones para
álgebra lineal
También tenemos
otras funciones que
pueden ser muy útiles
para la interacción con
matrices.
Programación avanzada
Simulación
Funciones utilitarias
sort( )
Esta función se
encarga de
regresarnos el vector
de entrada pero de
forma ordenada, ya
sea de forma
creciente o
Programación avanzada
Simulación
choose(n, k )
Esta función
encuentra el número
de posibles
subconjuntos de
tamaño k escogidos
de un conjunto de
tamaño n.
Programación avanzada
Simulación
union(x, y) - Unión
•
• intersect(x, y) -
Operaciones de Intersección
conjuntos • setdiff(x, y) - Diferencia
• setequal(x, y) -
Podemos llevar a cabo Igualdad
operaciones de conjuntos: c %in% x Pertenencia
•
de c en x
• choose(n, k)
Subconjuntos posibles
Programación avanzada
Simulación
Operaciones de
conjuntos
Por ejemplo:
Programación avanzada
Simulación
Operaciones de
conjuntos
Por ejemplo:
Programación avanzada
Simulación
Funciones de
distribuciones
estadísticas
R tiene prácticamente
toda función de
distribución
estadísticas,
principalmente las
más conocidas.
Programación avanzada
Simulación
• r para la generación de
números aleatorios
Funciones de
distribuciones • p para la función
estadísticas acumulativa.
• q para cuantiles.
Programación avanzada
Simulación
• dbeta
• dbinom
• dcauchy
• dchisq
Funciones de • dexp
• df
distribuciones • dgamma
estadísticas • dgeom
• dhyper
• dlnorm
• dmultinom
Hay una gran cantidad de • dnbinom
ellas… las más comunes: • dnorm
• dpois
• dt
• dunif
• dweibull
Programación avanzada
Simulación
Funciones de
distribuciones
estadísticas
Un ejemplo:
Programación avanzada
Simulación
Programación avanzada
Simulación
Simulación
Shiny
Instalación
install.packages(”shiny”, dependencies =
TRUE)
Programación avanzada
Shiny
library(shiny)
ui <- fluidPage()
library(shiny)
Inputs
Programación avanzada
Shiny
Ouputs
Programación avanzada
Shiny
library(shiny)
ui <- fluidPage(
# *Input() ,
# *Output
)
Programación avanzada
Shiny
sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100)
Programación avanzada
Shiny
library(shiny)
ui <- fluidPage(
sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100)
)
La sintaxis es importante:
sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100)
Programación avanzada
Shiny
ui <- fluidPage(
sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100),
plotOutput(“hist”)
)
ui <- fluidPage(
sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100),
plotOutput(“hist”)
)
¡¡¡¡Buenas noticias!!!
Introducción a la Programación Estadística con R
Bibliografía, Libros, referencias y notas útiles
Introducción a la Programación Estadística con R
Bibliografía, Libros, referencias y notas útiles
Introducción a la Programación Estadística con R
Bibliografía, Libros, referencias y notas útiles
Programación avanzada
Shiny
Business inquires?
[email protected]