SlideShare una empresa de Scribd logo
Análisis de datos con R
Act. Carlos E. López Natarén
INSTITUTO DE FÍSICA • UNAM • 2017
Análisis de datos con R
MAPA DE RUTA
¿Cómo avanzaremos en este taller?
• Nos enfocaremos en R como lenguaje
de programación estadística:
• Tipos
• Funciones
• Operaciones con datos
Análisis de datos con R
MAPA DE RUTA
Finalmente veremos qué cosas podemos hacer con los
diferentes paquetes modernos:
RStudio y Shiny que puede incluir estos paquetes:
knitr, devtools, rmarkdown, lubridate, tidyr, ggplot2,
dplyr, packrat, readr
MAPA DE RUTA
¿Cómo avanzaremos en este taller?
• El objetivo final será que tengan una
idea general de lo que se puede hacer
con R.
• No seremos demasiado minuciosos en
los detalles, estoy suponiendo que han
trabajado con datos anteriormente.
Análisis de datos con R
MAPA DE RUTA
Espero lo disfruten :-)
Análisis de datos con R
Instalación de R
La instalación de R es muy sencilla, tenemos que
visitar el siguiente sitio web:
http://www.r-project.org/
Análisis de datos con R
Una instalación de paquetes en Ubuntu se puede
hacer de manera sencilla con la herramienta apt-get
sudo apt-get install r-recommended
En Windows es point & click y en Mac OS X
prácticamente igual.
Instalación de R
Para instalar desde fuentes es un poco más
complicado y hay que instalar una buena cantidad
de paquetes de desarrollo:
Análisis de datos con R
apt-get install build-essential fort77 c-multilib gobjc++
xorg-dev liblzma-dev libblas-dev gfortran
aptitude libreadline-dev libjpeg-dev libtiff-dev libcairo-
dev default-jre libicu-dev openjdk-6-jdk openjdk-6-jre-
lib t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86-
nonfree-syriac xfonts-75dpi xfonts-100dpi t1-xfree86-
nonfree ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac
xfonts-75dpi xfonts-100dpi libjpeg62
Historia e introducción al R
¿Qué es R?
R es un dialecto del lenguaje S.
Entonces… ¿qué es S?
S fue/es un lenguaje que fue desarrollado
por John Chambers en Bell Labs en los 70’s,
fue pensado como un ambiente para el
análisis estadístico dentro de la compañía.
Análisis de datos con R
Historia e introducción al R
El sistema fue reescrito en los 80’s en C y es
entonces que Chambers y Hastie
documentan en el famoso “Statistical Models
in S” la funcionalidad del lenguaje para el
análisis estadístico.
Inicialmente se implementó como una serie
de bibliotecas de Fortran, además de que
las primeras versiones no contenían
funciones para análisis estadístico.
Análisis de datos con R
Historia e introducción al R
Básicamente, S fue pensado como un
ambiente interactivo que no necesariamente
se puede pensar como un lenguaje de
programación, pero mientras el usuario va
avanzando utilizando las características de
este, entra de manera fácil en prácticas de
programación.
Análisis de datos con R
Historia e introducción al R
Provée un acceso relativamente simple a
una gran variedad de técnicas estadística y
gráficas.
Para los usuarios avanzados se ofrece un
lenguaje de programación completo con el
que añadir nuevas técnicas por medio de la
definición de funciones.
Análisis de datos con R
Historia e introducción al R
Análisis de datos con R
Historia e introducción al R
Características de R
• Sintaxis similar a S.
• Semántica parecida a S.
• Corre en casi cualquier plataforma.
• Tiene cambio de versiones muy rápido.
Análisis de datos con R
Historia e introducción al R
Características de R
• Muy pequeño, la funcionalidad se le agrega utilizando
“paquetes”
• Capacidad de graficación bastante madura.
• Modo interactivo para probar ideas pero es un lenguaje
para hacer nuevas herramientas.
Análisis de datos con R
Historia e introducción al R
Grandes ventajas de R
• Tiene muchas funciones estadísticas
• Podemos implementar de manera rápida procedimientos
estadísticos y de gráficos
• Buenos gráficos “base” y más que excelentes gráficos
avanzados
• Los autores de funciones pueden ser contactados
directamente
• Una comunidad estimulante y muy activa; las listas R-help, R-
devel, y en Stack Overflow
• Es software libre
• Se ha modernizado con el interés de Microsoft y RStudio
Análisis de datos con R
Historia e introducción al 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
• Sistema base: utils, stats, datasets, compiler, parallel, tools,
methods, splines, tcltk, graphics, grDevices, grid, splines,
statS4
• Recomendados: boot, class, cluster, codetools, foreign,
kernSmooth, lattice, mgcv, name, rpart, survival, MASS, nnet,
Matrix
• Nueva generación de paquetes para desarrollo: shiny,
knitr, rmarkdown, DT, etc. etc.
• Más de 7 mil paquetes contribuidos por usuarios y subidos
a CRAN
Análisis de datos con R
Historia e introducción al R
Análisis de datos con R
Historia e introducción al R
Diferencias con otros paquetes estadísticos
• GUI, más reducida en R, eso ha ido cambiando
con RStudio
• Salida: Menos estadístico, no tablas
formateadas
• Sintaxis
• Selección de variables
• Nuevos conceptos: Paquetes, Objetos
Análisis de datos con R
Historia e introducción al R
Documentación básica
• An introduction to R
• Writing R Extensions
• R Data Import/Export
• R Installation and Administration
• R Internals
Análisis de datos con R
Introducción al lenguaje
Obteniendo ayuda
INSTITUTO DE FÍSICA • UNAM • 2017
Obteniendo ayuda
Hay varias maneras de encontrar ayuda cuando hay
problemas en R:
• Utilizar el sistema de ayuda de R.
• Preguntar a alguien que ya sepa.
• Listas de distribución.
• Stackoverflow.
Análisis de datos con R
Obteniendo ayuda
El sistema de ayuda del sistema es bastante
simple y se puede resumir a tres funciones:
help( ) - ?
example( )
help.search( ) - ??
library(help = ” ”)
vignette( )
Análisis de datos con R
Obteniendo ayuda
¿Preguntas?
• Experimentar un poco.
• Preguntar a alguien con más experiencia.
• Leer el código fuente.
Análisis de datos con R
Introducción al lenguaje
Objetos y tipos de datos
INSTITUTO DE FÍSICA • UNAM • 2017
Objetos y tipos de datos
Tipo de objetos en R
• Objetos del lenguaje: llamadas, expresiones,
nombres.
• Expresiones: Colecciones de expresiones
correctas no evaluadas.
• Funciones: Constan de lista de argumentos,
código, entorno.
Análisis de datos con R
Objetos y tipos de datos
Operaciones
• Aritméticas: Se pueden usar operaciones con
vectores.
• Lógicas: Se evalúan de izquierda a derecha,
examinando el primer elemento de cada
vector.
Análisis de datos con R
Objetos y tipos de datos
Operaciones
• Seleccionar elementos de un vector.
• Manipular valores perdidos.
• Ordenar vectores
Análisis de datos con R
Objetos y tipos de datos
Operaciones
• Para operaciones con conjuntos.
• Secuencias determinísticas.
• Secuencias aleatorias con funciones.
Análisis de datos con R
Objetos y tipos de datos
Objetos
Casi todo es un objeto, incluyendo las funciones
y estructuras de datos.
Para saber qué objetos tenemos usamos ls().
Análisis de datos con R
Objetos y tipos de datos
Objetos
R tiene 5 tipos de objetos básicos o ”atómicos”:
• 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
• Un vector solo puede contener objetos de la
misma clase.
• La lista se puede ver como un vector de
objetos de diferentes clases.
• Se pueden crear objetos con la función
vector( ).
Análisis de datos con R
Objetos y tipos de datos
Atributos
• Los objetos en R pueden tener atributos.
• names, dimnames
• dimensions (matrices, arreglos)
• class
• length
• Otros atributos definidos por el usuario.
• Se pueden acceder usando la función
attributes( ).
Análisis de datos con R
Objetos y tipos de datos
Impresión de objetos
• El operador : se usa para crear secuencias
de enteros
Creación de vectores
• Utilizamos la función c( ) para crear vectores
de objetos.
• O también usamos la función vector( ).
Análisis de datos con R
Objetos y tipos de datos
Análisis de datos con R
Objetos y tipos de datos
Mezcla de objetos
• Cuando se mezclan diferentes tipos de
objetos, se lleva a cabo una ”coerción”, lo
que genera que todos los objetos de un
vector sean de la misma clase.
Análisis de datos con R
Objetos y tipos de datos
Coerción explícita
• Los objetos puede ser explícitamente
coaccionados de una clase a otra, utilizando
las funciones as.*:
• as.numeric( )
• as.logical( )
• as.character( )
• as.integer( )
Análisis de datos con R
Objetos y tipos de datos
Cuando la coerción no funciona tan bien
• Puede suceder que intentemos coaccionar
un vector a un tipo de objeto que puede
resultar en algo que no tiene sentido, por
ejemplo:
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)
Este vector nos indica el # de renglones y de
columnas de la matriz
Análisis de datos con R
Objetos y tipos de datos
cbind y rbind
• Podemos crear matrices también utilizando
cbind y rbind, estas funciones ”pegan”
columnas o renglones para crear matrices:
Análisis de datos con R
Objetos y tipos de datos
Listas
• Las listas son un tipo especial de vector, que
puede contener elementos de diferentes
clases, son un tipo de dato muy importante
en R porque nos permite llevar a cabo
muchas operaciones que serían complicadas
si no las aprendemos a usar correctamente.
Análisis de datos con R
Objetos y tipos de datos
Análisis de datos con R
Objetos y tipos de datos
Factores
• Los factores son otro tipo especial de
vectores, estos se usan para representar
datos categóricos, estos pueden ser
ordenados o sin orden. Uno puede pensarlos
como un vector de enteros donde cada
entero tiene una etiqueta.
Análisis de datos con R
Objetos y tipos de datos
Valores faltantes
Los valores faltantes se denotan con NA o
NaN para operaciones indefinidas.
Podemos probar si estos valores existen en
nuestros objetos utilizando las funciones:
• is.na( )
• is.nan( )
Los valores NA también tienen una clase,
hay enteros NA, character NA, etc.
Un valor NaN es al mismo tiempo un NA
pero no al contrario.
Análisis de datos con R
Objetos y tipos de datos
Dataframes
Este es un tipo en R que nos sirve para
guardar datos tabulares.
Es uno de los tipos de datos más
importantes, o al menos, el tipo de dato que
más buscamos encontrarnos, de manera
limpia, sin NA’s o NaN’s, ya que con este
tipo de datos podemos llevar a cabo todos
los análisis que necesitemos de manera
fácil.
Análisis de datos con R
Objetos y tipos de datos
Dataframes
• Estas se pueden crear utilizando
data.frame( ), read.table( ) ó read.csv( )
• Podemos usar también la función
data.matrix( ) para convertir un dataframe
a matriz.
Análisis de datos con R
Objetos y tipos de datos
Dataframes
• Se representan como un tipo especial de
lista donde cada elemento de la lista
tiene la misma longitud.
• Cada elemento de la lista se puede ver
como una columna, y la longitud de cada
elemento de la lista es el número de
renglones.
Análisis de datos con R
Objetos y tipos de datos
Dataframes
• Contrario a las matrices, los
dataframes pueden guardar
diferentes clases en cada
columna.
• Parecido tiene un atributo
llamado row.names
Análisis de datos con R
Objetos y tipos de datos
Análisis de datos con R
Introducción al lenguaje
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
INSTITUTO DE FÍSICA • UNAM • 2017
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Retomando el tema de
las operaciones básicas
Hemos de recordar que
existen todas las que pueden
existir en una calculadora
científica.
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Estas pueden ser:
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
Estas pueden ser:
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
Cuando introducimos paréntesis es mucho más
fácil observar el orden en el que se llevan a cabo
las operaciones.
En el caso de nuestras operaciones de suma
multiplicación y división, se hace así.
Análisis de datos con R
Reglas de precedencia
• Llamadas a funciones y expresiones agrupadas.
• Operaciones de indexado y búsqueda.
• Aritméticas.
• Comparación.
• Fórmulas.
• Asignación.
• Ayuda.
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Operaciones vectorizadas
Como ya dijimos, el vector es uno de los
elementos básicos del lenguaje, por lo que es de
natural definir operaciones sobre ellos de manera
que hagan el código más eficiente, conciso y fácil
de leer.
Estas operaciones se definen así para hacernos
a la idea de que las operaciones normales
pueden pasar en paralelo.
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
Manejo de fechas y tiempos
Fechas y tiempos tienen clases especiales en R
que nos permite llevar a cabo operaciones
numéricas y estadísticas con ellas.
Análisis de datos con R
Introducción al lenguaje
Operaciones básicas y subconjuntos de datos
INSTITUTO DE FÍSICA • UNAM • 2017
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Subsetting (Tomar un subconjunto)
[ ] - extrae elementos de la misma clase.
[[ ]] - extrae elementos de una lista o data frame.
La clase regresada puede no ser lista o data
frame.
$ - extrae elementos de un data frame.
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
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[ ]
lista[[ ]] (puede ser usado con índices
computados)
lista$name (solo puede ser usado con nombres
literales)
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Emparejado parcial
Cuando utilizamos nombres,
podemos utilizar un
emparejado parcial para poder
acceder a valores de un objeto
utilizando [[ y $
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
NA’s
Es bien común encontrarse con valores NA (o
valores faltantes) también es deseable quitar
valores faltantes.
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
NA’s
Si tenemos varios objetos, y
queremos los que no son
faltantes.
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
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
Análisis de datos con R
Introducción al lenguaje
Operaciones básicas y subconjuntos de datos
INSTITUTO DE FÍSICA • UNAM • 2017
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Leer datos
Una de las operaciones más importantes
y más usadas que se llevan a cabo en R
es la lectura de datos.
Por supuesto, los datos vienen en todo
tipo de formatos, tamaños, etc. etc.
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Leer datos
Hay algunas funciones que vienen en el
sistema base de R que nos ayudan a 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
Hay algunas funciones que vienen en el
sistema base de R que nos ayudan a escribir
datos también (análogas a las de lectura):
• write.table
• writeLines
• dump
• dput
• save
• serialize
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
read.table
Esta función es la más usada
comúnmente para leer datos,
de hecho, read.csv por
ejemplo, es una versión con
parámetros ya establecidos
de read.table.
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
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
Sus parámetros más importantes son:
• 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
Para archivos relativamente pequeños
(por ejemplo, menos de un cuarto del
tamaño de nuestra memoria RAM),
podemos llamar read.table sin
especificar argumentos
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
read.table
Por default:
• Ignorará las líneas con #.
• Averiguará cuantos renglones tenemos.
• Averiguará los tipos de variables que va encontrando.
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
read.table
Podemos ser cuidadosos cuando
queremos leer archivos muy grandes.
• No leer si los datos son mayor a la
cantidad de memoria RAM.
• Establecer comment.char=”” si no
hay líneas comentadas en el
archivo
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
read.table
Es importante también, leer la ayuda
de read.table, esto nos dará muchos
hints sobre cómo es posible mejorar
nuestro rendimiento a la hora de leer
archivos.
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Hints para read.table
• Usar el col.Classes.
• Establecer nrows desde el principio.
Averiguar la clase de cada columna es
fácil.
col.Classes hará más rápida la lectura,
nrows ayuda con el uso de memoria
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
read.table
Es claro que es importante el conocer
las especificaciones de nuestro
sistema:
• 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:
Si tenemos por ejemplo, un millón de
renglones y 100 columnas, los cuáles son
todos de datos numéricos, ¿cuanta
memoria se requiere para este dataframe?
1,000,000 X 100 X 8 bytes = 800,000,000
bytes = 727 MB
La práctica dice que necesitamos al menos
el doble de memoria para trabajar de
manera cómoda.
Análisis de datos con R
Precedencia, operaciones vectoriales y manejo de fechas y tiempo
Escribiendo datos
Una manera muy simple de escribir
datos es usando dump y leer estos de
vuelta utilizando source.
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
Escribiendo datos
Otra es utilizando write.table ó
write.csv, estas son similares a
read.table y read.csv y será utilizadas
a detalle en la práctica.
Análisis de datos con R
Programación en R
Estructuras de control
INSTITUTO DE FÍSICA • UNAM • 2017
Estructuras de control
Estructuras de control
Éstas nos permiten controlar el flujo
de ejecución de un programa.
Dependiendo de si se cumplen ciertas
condiciones en el momento, también
permiten que se lleven a cabo tareas o
una operación de manera repetida.
Análisis de datos con R
Estructuras de control
Estas pueden ser:
• Condicionales: if, else
• Bucle de repetición: for
• Bucle de condición: while
• Bucle infinito: repeat
• Romper un bucle: break
• Saltarse un bucle: next
Estructuras de control
Análisis de datos con R
Estructura de control: if
if(condicion){
## operaciones
} else if(condicion2){
## otra operacion
}else{
## otra operación
}
Estructuras de control
Análisis de datos con R
Usos válidos
Estructuras de control
Análisis de datos con R
Por supuesto, también podemos
prescindir del else
if(condición1) {
# operaciones
}
if(condición2){
# operaciones
}
Estructuras de control
Análisis de datos con R
Estructura de
control: for
for(i in 1:10) {
print(i)
}
Estructuras de control
Análisis de datos con R
Estructura de
control: for
for(iterador) {
# operaciones
}
Estructuras de control
Análisis de datos con R
Por supuesto,
también funciona
con vectores de
números
Estructuras de control
Análisis de datos con R
También existe el
clásico bucle
anidado con for:
¡No abusen del for
anidado!
Estructuras de control
Análisis de datos con R
Estructura de
control: while
Estructuras de control
Análisis de datos con R
Estructura de control:
repeat y break
repeat{
# operaciones
if(condición) {
break
}
else {
# operaciones
}
}
Estructuras de control
Análisis de datos con R
Estructura de control: next
for(iterador){
if(condición){
# se salta si
# cumple la
# condición
next
}
# operaciones
}
Estructuras de control
Análisis de datos con R
Recordemos:
Se deben evitar los bucles infinitos, pueden
meter problemas.
if, while y for se usan para controlar el
flujo de un programa en R.
Utilizar estas estructuras en modo
interactivo puede volverse truculento, por lo
que recomendamos utilizar las funciones
*apply.
Estructuras de control
Análisis de datos con R
Programación en R
Funciones
INSTITUTO DE FÍSICA • UNAM • 2017
Funciones
Funciones
Las funciones se crean
usando la función
function( ) y se guardan
como objetos de R de tipo
”function”
Programación en R
Definición de las
funciones
Programación en R
Funciones
Hechos importantes de las funciones:
Son objetos que se tratan como cualquier otro en R, es
decir:
Pueden ser pasadas como argumentos de otras
funciones.
Pueden ser anidadas, i.e. uno puede definir una función
dentro de otra.
El valor que regresan es la última expresión en ser
evaluada en el cuerpo de la función.
Programación en R
Funciones
Argumentos de funciones
Las funciones tienen argumentos, que
potencialmente puede tener valores
por default.
Programación en R
Funciones
Argumentos de funciones
Los argumentos formales, son los
argumentos que se incluyen en la
definición de la función.
Programación en R
Funciones
Argumentos de funciones
No toda llamada a una función
hace uso de todos los
argumentos formales.
Programación en R
Funciones
Argumentos coincidentes
Los argumentos en R pueden
ser coincidimos
posicionalmente o por nombre.
Argumentos
coincidentes
Coincidencia exacta
Coincidencia parcial
Coincidencia por
posición
Programación en R
Funciones
Evaluación floja (lazy
evaluation)
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 ”…”
Usando si un número variable de
argumentos se pasarán a otras
funciones.
Necesario si no se sabe a priori el
número de argumentos.
Las funciones genéricas lo usan.
Programación en R
Funciones
El argumento ”…”
Programación en R
Funciones
El argumento ”…”
Cualquier argumento después de ”…”
tiene que ir nombrado explícitamente y
no puede ser parcialmente emparejado.
Programación en R
Funciones
Programación avanzada y sistema de gráficos
Funciones *apply
INSTITUTO DE FÍSICA • UNAM • 2017
Programación avanzada y sistema de gráficos
Funciones *apply
Funciones *apply
apply, sapply, apply, son un grupo
especial de funciones vectorizadas, como
yo hemos sugerido de manera implícita,
es mejor utilizar funciones vectorizadas
cuando sea posible, ya que su ejecución
se lleva a cabo en paralelo.
Funciones *apply
Funciones *apply
Para comenzar podemos decir
que esta familia de funciones se
encuentra en el paquete base, y
estas se utilizan para manipular
”rebanadas” de datos.
Programación avanzada y sistema de gráficos
Programación avanzada y sistema de gráficos
Graficación con el sistema base de gráficos
INSTITUTO DE FÍSICA • UNAM • 2017
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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficación con el sistema base de
gráficos
o puede tomar
columnas para
graficarlas:
Programación avanzada y sistema de gráficosGraficació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áficosGraficación con el sistema base de
gráficos
Una vez hecha nuestra gráfica, podemos guardarlas
utilizando las opciones de RStudio o desde la línea de
comandos con las funciones:
• pdf(”archivo.pdf”)
• png(”archivo.png”)
• jpeg(”archivo.jpg”)
• postscript(”archivo.ps”)
Programación avanzada y sistema de gráficosGraficación con el sistema base de
gráficos
Resumiendo,
tenemos ya varias
funciones:
plot( )
points( )
abline( )
lines( )
Programación avanzada y sistema de gráficosGraficación con el sistema base de
gráficos
Todas estas tienen
parámetros
particulares que
pueden ayudarnos a
modificar la estética
de la gráfica
Podemos especificar:
• fuentes
• colores
• estilos de línea
• ejes
• líneas de referencia
para eso es necesario leer el manual,
particularmente help(par).
Programación avanzada y sistema de gráficosGraficación con el sistema base de
gráficos
También hay gráficas donde no
necesariamente se tienen que
graficar pares de puntos, por
ejemplo densidades, gráficas de
puntos, de barras, de líneas,
histogramas, de caja, etc.
Programación avanzada y sistema de gráficosGraficación con el sistema base de
gráficos
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áficosGraficación con el sistema base de
gráficos
Gráfica de densidad
por kernel
Esta es una manera
más efectiva de ver la
distribución de una
variable, para eso
tenemos que usar la
función density( )
Programación avanzada y sistema de gráficosGraficación con el sistema base de
gráficos
Gráfica de
densidad por
kernel
Si pasamos esto
a la función plot,
obtenemos
entonces:
Programación avanzada y sistema de gráficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficació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áficosGraficación con el sistema base de
gráficos
Programación avanzada y sistema de gráficos
Colores en el sistema de gráficos
INSTITUTO DE FÍSICA • UNAM • 2017
Colores
Podemos especificar colores de tres maneras:
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
Se pueden utilizar
funciones específicas
para crear vectores
de colores:
1. rainbow(n)
2. heat.colors(n)
3. topo.colors(n)
4. cm.colors(n) y
5. colors( )
Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos
Programación avanzada y sistema de gráficos
Creación de gráficas en 3D
INSTITUTO DE FÍSICA • UNAM • 2017
rgl
Para poder graficar en tres
dimensiones, podemos usar el
paquete rgl, este se instala con
el comando que ya conocemos:
install.packages(”rgl”,
dependencies = TRUE)
Programación avanzada y sistema de gráficos
Creación de gráficas en 3D
rgl
Una vez instalado rgl, podemos
entonces utilizar la función
plot3d, donde lo que hacemos es
graficar punto por punto, es decir,
recibe un vector x, y y z, estos
vectores entonces son graficados
en tres dimensiones.
Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos
Uso de plot3d
Por ejemplo, supongamos
que tenemos tres vectores,
x , y y z y queremos graficar
los puntos.
Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos
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
Una vez creados los
tres vectores,
procedemos
entonces a abrir el
sistema de gráficos
de OpenGL para
poder graficar
nuestros puntos con
la función open3d( )
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
Para guardar un archivo
hacemos:
rgl.snapshot( filename, fmt =
"png", top = TRUE )
snapshot3d( )
Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos
Programación avanzada
Expresiones regulares
INSTITUTO DE FÍSICA • UNAM • 2017
Programación avanzada
Expresiones regulares
Expresiones regulares
Hasta el momento, hemos
visto que el lenguaje tiene
vectores numéricos y
matrices, pero las cadenas
de caracteres son muy
importantes también.
Programación avanzada
Expresiones regulares
Expresiones regulares
Ya hemos visto varias
importantes, las fechas por
ejemplo, pero también algunos
otros tipos, para eso, usamos
algunas funciones de R que
manipulan cadenas de
caracteres.
Programación avanzada
Expresiones regulares
Expresiones regulares
Y además de estas funciones,
las expresiones regulares nos
ayudarán para poder usar bien
estas funciones, las
expresiones regulares son una
especie de comodín, o un atajo
para poder referirnos…
Programación avanzada
Expresiones regulares
Expresiones regulares
…a una gran cantidad de
cadenas.
Por ejemplo, la expresión:
“[bv]” se refiere a cualquier
cadena que contenga la letra
b o la letra v.
Programación avanzada
Expresiones regulares
Expresiones regulares
En términos más formales, una
regexp es una secuencia de
caracteres que definen la
búsqueda de un patrón,
principalmente para hacer
coincidencia de patrones con
cadenas de caracteres.
Programación avanzada
Expresiones regulares
Funciones para manipular
cadenas
Ahora veremos algunas
funciones importantes para
manipular cadenas y
finalizaremos con el uso de
expresiones regulares para
poder usarlas de mejor manera.
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( )
donde x es un vector de cadenas, si x tiene n
cadenas, entonces grep(patrón, x) nos regresará un
vector numérico con los índices del vector en donde el
patrón ha sido encontrado. Por supuesto, es sensible
a mayúsculas y minúsculas.
Programación avanzada
Expresiones regulares
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)
Esta función divide a
una cadena en
subcadenas basada
en la cadena divisoria,
es muy útil para
cuando encontramos
formatos de fechas
por ejemplo.
Programación avanzada
Expresiones regulares
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)
Además de que incluso hay
libros que enseñan a utilizar
expresiones regulares, veremos
solo un par de ejemplos que
pueden ser muy útiles.
Programación avanzada
Expresiones regulares
Expresiones
regulares:
[ab] cuando se usan
corchetes, es una
expresión regular que
expresa si alguno de
esos caracteres existe
dentro del texto.
Programación avanzada
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
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
INSTITUTO DE FÍSICA • UNAM • 2017
ggplot2
Para fines prácticos, ggplot2 es un
paquete que provee gráficos en
donde los detalles son dejados al
paquete, por ejemplo, donde poner
las leyendas y las fuentes correctas.
Los valores por omisión de este
paquete permiten generar gráficos
con mucha calidad que pueden ser
utilizados en publicaciones.
Programación avanzada
Graficación con ggplot2
ggplot2
La manera en que funciona es muy
diferente al sistema de gráficos
base, este funciona en base a
capas, comenzando con una capa
que muestra los datos crudos,
luego se van añadiendo capas de
anotaciones y de resúmenes
estadísticos.
Programación avanzada
Graficación con ggplot2
ggplot2
Muy al estilo en el que se llevan a
cabo los análisis estadísticos, en
vez de pasar mucho tiempo
haciendo tu gráfico verse
agradable a la vista, nos podemos
enfocar en crear un gráfico que
revele de mejor manera la
información de tus datos.
Programación avanzada
Graficación con ggplot2
qplot
qplot( ) es la única función que
utilizaremos en este taller, ya que
podemos hacer una gran cantidad
de cosas con ella y además de que
aprender la gramática de los
gráficos de ggplot2 nos tomaría un
curso entero.
Programación avanzada
Graficación con ggplot2
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
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
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
Las variables depth,
table, x, y, z se refieren
a las dimensiones del
diamante.
Podemos entonces
tomar una muestra
aleatoria de este
conjunto de datos que
llamaremos dchico.
Programación avanzada
Graficación con ggplot2
Programación avanzada
Graficación con ggplot2
qplot( )
Ahora podemos crear
algunas gráficas. qplot
recibe como primer
argumento los valores de x
que queremos graficar y
como segundo argumento
los valores de y, justo como
con plot( ), la única
diferencia es que podemos
especificar de donde
queremos que tome los
datos, ya que diamonds y
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
Graficación con ggplot2
Atributos estéticos:
color
Con qplot podemos
mapear algún atributo
estético a algún valor
categórico, por ejemplo,
en la siguiente gráfica,
podemos agregar
información sobre
nuestros datos, por
ejemplo, podemos
agregar el color del
diamante.
Programación avanzada
Graficación con ggplot2
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
Cuando nuestro conjunto
de datos es demasiado
grande, podemos pedir
que cada punto que se
grafique no lo haga
completamente sino con
cierta transparencia, este
es el alpha, por ejemplo:
Programación avanzada
Graficación con ggplot2
Atributos estéticos:
alpha
El valor de I(1/100) nos
indica cuanto de un
punto graficado se
pintará, es decir, en el
caso de 1/100
necesitaríamos 100
puntos en el mismo lugar
para poder pintar un solo
punto completamente
opaco
Programación avanzada
Graficación con ggplot2
Atributos estéticos:
shape
El tamaño (size) también
es un atributo que
podemos manera a
alguna variable, por
ejemplo, en este caso a
una variable llamada
table que es una
transformación de las
variables x, y z.
Programación avanzada
Graficación con ggplot2
Consideraciones estéticas
Diferentes tipos de atributos
estéticos trabajan mejor con
diferentes tipos de variables, por
ejemplo, color y shape funcionan
bien con variables categóricas
Programación avanzada
Graficación con ggplot2
Consideraciones estéticas
mientras que tamaño trabaja mejor
con variables continuas,
La cantidad de datos también puede
hacer una diferencia, si hay muchos
datos puede ser difícil distinguir
entre diferentes grupos, por lo que
usamos faceting
Programación avanzada
Graficación con ggplot2
Atributos estéticos:
faceting
Este atributo permite que
creemos tablas dividiendo
los datos en grupos y
desplegando la misma
gráfica para cada grupo
de tal manera que permite
la comparación visual
inmediata.
Programación avanzada
Graficación con ggplot2
geoms
No solo podemos hacer
gráficas de dispersión x contra
y, también podemos crear otros
tipos de gráficos utilizando el
parámetro geom, geom viene
de geometric object, este
describe el tipo de objeto.
Programación avanzada
Graficación con ggplot2
geoms
estos son los que hay:
geom = ”point” el valor por
omisión, ya lo hemos visto.
geom = ”smooth” ajusta
una curva a los datos y
despliega la curva y su
error estándar.
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
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 = “path” y “line”
dibujan líneas entre los
puntos, pero líneas se
puede usar para unir
observaciones
conectadas de alguna
otra manera, line va de
izq. a derecha, mientras
que path pueden irse en
cual. direc.
Programación avanzada
Graficación con ggplot2
geoms
también podemos hacer
gráficas en 1D
geom= “histogram” crea
un histograma
geom= “freqpoly” un
polinomio de frecuencias
geom= “density” crea una
gráfica de densidad.
Programación avanzada
Graficación con ggplot2
Programación avanzada
Simulación
INSTITUTO DE FÍSICA • UNAM • 2017
Programación avanzada
Simulación
Introducción
R provee una gran cantidad
de funciones matemáticas y
estadísticas, de álgebra lineal
y de operaciones con
conjuntos,
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
Funciones matemáticas
Los primeros tipos de
funciones que veremos son
las matemáticas, y son las
siguientes:
exp( ) Función exponencial
log( ) Función logarítmica
log10( ) F. logarítmica base
10
sqrt( ) Función raíz cuadrada
abs( ) Función valor absoluto
sin( ) cos( ) tan( ) F.
trigonométricas
min( ) max( ) F. máximo y
mínimo
Programación avanzada
Simulación
Funciones matemáticas
Los primeros tipos de
funciones que veremos son
las matemáticas, y son las
siguientes:
which.min( ) y which.max( )
índice del valor mínimo y máximo
pmin( ) pmax( ) mínimo y
máximo de varios vectores
elemento a elemento.
sum( ) prod( ) Suma y productos
de un vector.
cumsum() cumprod( ) Suma y
producto acumulativo de
elementos de vector.
Programación avanzada
Simulación
Funciones
matemáticas
Los primeros tipos de
funciones que veremos
son las matemáticas, y
son las siguientes:
round( ) Redondea
entero más cercano.
floor( ) Redondeo al
entero abajo
ceiling( ) Redondeo al
entero arriba
factorial( ) Función
factorial
Programación avanzada
Simulación
Funciones para álgebra
lineal
No hemos hablado mucho de
este tipo de operaciones, pero
son muy importantes, ya
sabemos que podemos
multiplicar por ejemplo un
vector por un escalar.
Programación avanzada
Simulación
Funciones para álgebra
lineal
Una función muy útil es la
función crossprod( ) que nos
encuentra el producto punto
de dos vectores con la misma
dimensión.
Programación avanzada
Simulación
Funciones para álgebra
lineal
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
Funciones para álgebra
lineal
También tenemos otras
funciones que pueden ser
muy útiles para la
interacción con matrices.
• t( ) matriz transpuesta
• qr( ) descomposición QR
• chol( ) descomposición
de Cholesky
• det( ) determinante
• eigen( ) eigenvalores,
eigenvectores
• diag( ) Extrae la diagonal
de una matriz cuadrada.
• 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
Operaciones de
conjuntos
Podemos llevar a cabo
operaciones de conjuntos:
• union(x, y) - Unión
• intersect(x, y) -
Intersección
• setdiff(x, y) - Diferencia
• setequal(x, y) -
Igualdad
• 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
Funciones de
distribuciones
estadísticas
En general se nombran
con un prefijo y el nombre
de la distribución:
• r para la generación de
números aleatorios
• p para la función
acumulativa.
• d para la función de
densidad o de
probabilidad de masa.
• q para cuantiles.
Programación avanzada
Simulación
Funciones de
distribuciones
estadísticas
Hay una gran cantidad de
ellas… las más comunes:
• dbeta
• dbinom
• dcauchy
• dchisq
• dexp
• df
• dgamma
• dgeom
• dhyper
• dlnorm
• dmultinom
• dnbinom
• 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
Todas estas funciones
nos pueden servir
para llevar a cabo
simulaciones de
diferentes problemas
que nos pudiéramos
plantear.
Programación avanzada
Simulación
Programación avanzada
Shiny
INSTITUTO DE FÍSICA • UNAM • 2017
Shiny
Shiny es un marco de desarrollo
web para R, esto nos permite
convertir nuestros análisis o
gráficas en aplicaciones
interactivas en el web.
La gran ventaja es que no
necesitamos saber (demasiado) de
HTML, CSS, JavaScript.
Programación avanzada
Shiny
Instalación
install.packages(”shiny”, dependencies =
TRUE)
Programación avanzada
Shiny
Programación avanzada
Shiny
library(shiny)
ui <- fluidPage()
server <- function(input, output){}
shinyApp(ui = ui, server = server)
library(shiny)
ui <- fluidPage(“Hola Mundo”)
server <- function(input, output){}
shinyApp(ui = ui, server = server)
Programación avanzada
Shiny
Programación avanzada
Shiny
Inputs
Programación avanzada
Shiny
Ouputs
library(shiny)
ui <- fluidPage(
# *Input() ,
# *Output
)
Programación avanzada
Shiny
Básicamente todo se tiene que meter va
como funciones dentro de fluidPage, pero
pueden haber más cosas:
library(shiny)
sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100)
Programación avanzada
Shiny
Probemos el siguiente código:
library(shiny)
ui <- fluidPage(
sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100)
)
server <- function(input, output){}
shinyApp(ui = ui, server = server)
Programación avanzada
Shiny
Podemos meter esto en nuestra aplicación de
la siguiente manera:
sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100)
Programación avanzada
Shiny
La sintaxis es importante:
Programación avanzada
Shiny
Podemos usar otras funciones para el input:
library(shiny)
ui <- fluidPage(
sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100),
plotOutput(“hist”)
)
server <- function(input, output){}
shinyApp(ui = ui, server = server)
Programación avanzada
Shiny
Ahora tenemos que decirle al server qué
hacer con estos datos para que nos
funcionen:
library(shiny)
ui <- fluidPage(
sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100),
plotOutput(“hist”)
)
server <- function(input, output){
output$hist <- renderPlot({
hist(rnorm(100), breaks = input$num)
})
}
shinyApp(ui = ui, server = server)
Programación avanzada
Shiny
Ahora tenemos que decirle al server qué
hacer con estos datos para que nos
funcionen:
Programación avanzada
Shiny
Dependiendo del valor que escojamos, será el
valor que tomará el input.
Programación avanzada
Shiny
Podemos usar otras cosas para el output:
BibliografíaLibros que son muy útiles
INSTITUTO DE FÍSICA • UNAM • 2017
Introducción a la Programación Estadística con R
Bibliografía, Libros, referencias y notas útiles
¡¡¡¡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
Muchas gracias :-)
natorro@fisica.unam.mx
Programación avanzada
Shiny
Business inquires?
carlos.lopez@massivetrend.com
Programación avanzada
Shiny

Más contenido relacionado

La actualidad más candente

Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)
Leinylson Fontinele
 
Topicos avanzados de programacion
Topicos avanzados de programacionTopicos avanzados de programacion
Topicos avanzados de programacion
ANAPATRICIA_BAUTISTAPEREZ
 
Listas y fecha en Python
Listas y fecha en PythonListas y fecha en Python
Listas y fecha en Python
Haylin Ellenes
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
Giancarlo Silva
 
Introducción a sql
Introducción a  sqlIntroducción a  sql
Introducción a sql
Marisol Henao
 
R Introducción
R IntroducciónR Introducción
R Introducción
Luis Alan Navarro
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
Mauro Jiménez
 
Matplotlib
MatplotlibMatplotlib
Matplotlib
Amir Shokri
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptx
jgs07
 
Programacion Orientada a Objetos en python
Programacion Orientada a Objetos en pythonProgramacion Orientada a Objetos en python
Programacion Orientada a Objetos en python
wozgeass
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
Elaine Cecília Gatto
 
Ejercicios áLgebra Relacional
Ejercicios áLgebra RelacionalEjercicios áLgebra Relacional
Ejercicios áLgebra Relacional
negriz
 
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
André Constantino da Silva
 
Semana 4 Estructuras de datos(Tuplas, Conjuntos y Diccionarios)
Semana 4   Estructuras de datos(Tuplas, Conjuntos y Diccionarios)Semana 4   Estructuras de datos(Tuplas, Conjuntos y Diccionarios)
Semana 4 Estructuras de datos(Tuplas, Conjuntos y Diccionarios)
Richard Eliseo Mendoza Gafaro
 
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Leinylson Fontinele
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
Luciano Ramalho
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
ivanvillar7
 
3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje
Laura Folgado Galache
 
Introducción a Apache HBase
Introducción a Apache HBaseIntroducción a Apache HBase
Introducción a Apache HBase
Marcos Ortiz Valmaseda
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
Alvaro Enrique Ruano
 

La actualidad más candente (20)

Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)
 
Topicos avanzados de programacion
Topicos avanzados de programacionTopicos avanzados de programacion
Topicos avanzados de programacion
 
Listas y fecha en Python
Listas y fecha en PythonListas y fecha en Python
Listas y fecha en Python
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Introducción a sql
Introducción a  sqlIntroducción a  sql
Introducción a sql
 
R Introducción
R IntroducciónR Introducción
R Introducción
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Matplotlib
MatplotlibMatplotlib
Matplotlib
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptx
 
Programacion Orientada a Objetos en python
Programacion Orientada a Objetos en pythonProgramacion Orientada a Objetos en python
Programacion Orientada a Objetos en python
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
Ejercicios áLgebra Relacional
Ejercicios áLgebra RelacionalEjercicios áLgebra Relacional
Ejercicios áLgebra Relacional
 
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
 
Semana 4 Estructuras de datos(Tuplas, Conjuntos y Diccionarios)
Semana 4   Estructuras de datos(Tuplas, Conjuntos y Diccionarios)Semana 4   Estructuras de datos(Tuplas, Conjuntos y Diccionarios)
Semana 4 Estructuras de datos(Tuplas, Conjuntos y Diccionarios)
 
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje
 
Introducción a Apache HBase
Introducción a Apache HBaseIntroducción a Apache HBase
Introducción a Apache HBase
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 

Destacado

Storytelling - Tech Cívica
Storytelling - Tech CívicaStorytelling - Tech Cívica
Storytelling - Tech Cívica
SocialTIC
 
Visualización de datos - Tech Cívica
Visualización de datos - Tech CívicaVisualización de datos - Tech Cívica
Visualización de datos - Tech Cívica
SocialTIC
 
Tech Civica México - NDI
Tech Civica México - NDI Tech Civica México - NDI
Tech Civica México - NDI
SocialTIC
 
Métricas: cómo medir el impacto de tu comunicación y campañas - Techcívica
Métricas: cómo medir el impacto de tu comunicación y campañas - TechcívicaMétricas: cómo medir el impacto de tu comunicación y campañas - Techcívica
Métricas: cómo medir el impacto de tu comunicación y campañas - Techcívica
SocialTIC
 
Acelerador para planteamiento del problema (Design Thiniking) Tech Cívica
Acelerador para planteamiento del problema (Design Thiniking) Tech CívicaAcelerador para planteamiento del problema (Design Thiniking) Tech Cívica
Acelerador para planteamiento del problema (Design Thiniking) Tech Cívica
SocialTIC
 
Narrativas basadas en datos - Tech Cívica
Narrativas basadas en datos  - Tech CívicaNarrativas basadas en datos  - Tech Cívica
Narrativas basadas en datos - Tech Cívica
SocialTIC
 
Design thinking - Tech Cívica
Design thinking - Tech CívicaDesign thinking - Tech Cívica
Design thinking - Tech Cívica
SocialTIC
 
How to Use Slideshare
How to Use SlideshareHow to Use Slideshare
How to Use Slideshare
Converting Copy
 
Limpieza de datos - Tech Cívica
Limpieza de datos - Tech CívicaLimpieza de datos - Tech Cívica
Limpieza de datos - Tech Cívica
SocialTIC
 

Destacado (9)

Storytelling - Tech Cívica
Storytelling - Tech CívicaStorytelling - Tech Cívica
Storytelling - Tech Cívica
 
Visualización de datos - Tech Cívica
Visualización de datos - Tech CívicaVisualización de datos - Tech Cívica
Visualización de datos - Tech Cívica
 
Tech Civica México - NDI
Tech Civica México - NDI Tech Civica México - NDI
Tech Civica México - NDI
 
Métricas: cómo medir el impacto de tu comunicación y campañas - Techcívica
Métricas: cómo medir el impacto de tu comunicación y campañas - TechcívicaMétricas: cómo medir el impacto de tu comunicación y campañas - Techcívica
Métricas: cómo medir el impacto de tu comunicación y campañas - Techcívica
 
Acelerador para planteamiento del problema (Design Thiniking) Tech Cívica
Acelerador para planteamiento del problema (Design Thiniking) Tech CívicaAcelerador para planteamiento del problema (Design Thiniking) Tech Cívica
Acelerador para planteamiento del problema (Design Thiniking) Tech Cívica
 
Narrativas basadas en datos - Tech Cívica
Narrativas basadas en datos  - Tech CívicaNarrativas basadas en datos  - Tech Cívica
Narrativas basadas en datos - Tech Cívica
 
Design thinking - Tech Cívica
Design thinking - Tech CívicaDesign thinking - Tech Cívica
Design thinking - Tech Cívica
 
How to Use Slideshare
How to Use SlideshareHow to Use Slideshare
How to Use Slideshare
 
Limpieza de datos - Tech Cívica
Limpieza de datos - Tech CívicaLimpieza de datos - Tech Cívica
Limpieza de datos - Tech Cívica
 

Similar a Análisis de datos con R - Techcivica

Curso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias SocialesCurso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias Sociales
Nicolas Robinson-Garcia
 
10 11 introducción a r para desarrolladores
10 11 introducción a r para desarrolladores10 11 introducción a r para desarrolladores
10 11 introducción a r para desarrolladores
Software Guru
 
Base de datos
Base de datosBase de datos
Base de datos
Yahad Na Maaz
 
Estadística con Lenguaje R: Sesión 1
Estadística con Lenguaje R: Sesión 1Estadística con Lenguaje R: Sesión 1
Estadística con Lenguaje R: Sesión 1
Luis Fernando Aguas Bucheli
 
Introducción a la Programación en R
Introducción a la Programación en RIntroducción a la Programación en R
Introducción a la Programación en R
Rosa E Padilla
 
procesamiento de datos con python para resolucion de ciencia de datos, aplica...
procesamiento de datos con python para resolucion de ciencia de datos, aplica...procesamiento de datos con python para resolucion de ciencia de datos, aplica...
procesamiento de datos con python para resolucion de ciencia de datos, aplica...
DEMSSHILLLEONELCOUTI
 
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
Luis Alan Navarro
 
Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.
Mayra Almache
 
Visualfoxpro
VisualfoxproVisualfoxpro
Visualfoxpro
Juan Andres Mendoza
 
Introduccion a Data Science
Introduccion a Data ScienceIntroduccion a Data Science
Introduccion a Data Science
SpanishPASSVC
 
Taller de c sharp
Taller de c sharpTaller de c sharp
Taller de c sharp
Ely Santillán Tarazón
 
Text Mining con R en SQL Server 2016
Text Mining con R en SQL Server 2016Text Mining con R en SQL Server 2016
Text Mining con R en SQL Server 2016
jorge Muchaypiña
 
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Nerys Ramírez Mordán
 
Articulo en r
Articulo en rArticulo en r
Articulo en r
Nasly Reyes Payares
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
Washington Bastidas
 
Lenguaje r
Lenguaje rLenguaje r
ProgramaCursoPrimerosPasosenR.docx
ProgramaCursoPrimerosPasosenR.docxProgramaCursoPrimerosPasosenR.docx
ProgramaCursoPrimerosPasosenR.docx
JUDASPRIEST9
 
Tipos de datos orleny esperidin
Tipos de datos orleny esperidinTipos de datos orleny esperidin
Tipos de datos orleny esperidin
Mari_1114
 
Programación
ProgramaciónProgramación
Programación
Oscar Eduardo
 
R Services con SQL Server
R Services con SQL ServerR Services con SQL Server
R Services con SQL Server
dbLearner
 

Similar a Análisis de datos con R - Techcivica (20)

Curso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias SocialesCurso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias Sociales
 
10 11 introducción a r para desarrolladores
10 11 introducción a r para desarrolladores10 11 introducción a r para desarrolladores
10 11 introducción a r para desarrolladores
 
Base de datos
Base de datosBase de datos
Base de datos
 
Estadística con Lenguaje R: Sesión 1
Estadística con Lenguaje R: Sesión 1Estadística con Lenguaje R: Sesión 1
Estadística con Lenguaje R: Sesión 1
 
Introducción a la Programación en R
Introducción a la Programación en RIntroducción a la Programación en R
Introducción a la Programación en R
 
procesamiento de datos con python para resolucion de ciencia de datos, aplica...
procesamiento de datos con python para resolucion de ciencia de datos, aplica...procesamiento de datos con python para resolucion de ciencia de datos, aplica...
procesamiento de datos con python para resolucion de ciencia de datos, aplica...
 
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
 
Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.
 
Visualfoxpro
VisualfoxproVisualfoxpro
Visualfoxpro
 
Introduccion a Data Science
Introduccion a Data ScienceIntroduccion a Data Science
Introduccion a Data Science
 
Taller de c sharp
Taller de c sharpTaller de c sharp
Taller de c sharp
 
Text Mining con R en SQL Server 2016
Text Mining con R en SQL Server 2016Text Mining con R en SQL Server 2016
Text Mining con R en SQL Server 2016
 
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
 
Articulo en r
Articulo en rArticulo en r
Articulo en r
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
 
Lenguaje r
Lenguaje rLenguaje r
Lenguaje r
 
ProgramaCursoPrimerosPasosenR.docx
ProgramaCursoPrimerosPasosenR.docxProgramaCursoPrimerosPasosenR.docx
ProgramaCursoPrimerosPasosenR.docx
 
Tipos de datos orleny esperidin
Tipos de datos orleny esperidinTipos de datos orleny esperidin
Tipos de datos orleny esperidin
 
Programación
ProgramaciónProgramación
Programación
 
R Services con SQL Server
R Services con SQL ServerR Services con SQL Server
R Services con SQL Server
 

Más de SocialTIC

Tecnología Cívica Electoral durante periodo electoral (2009 - 2018) en Latino...
Tecnología Cívica Electoral durante periodo electoral (2009 - 2018) en Latino...Tecnología Cívica Electoral durante periodo electoral (2009 - 2018) en Latino...
Tecnología Cívica Electoral durante periodo electoral (2009 - 2018) en Latino...
SocialTIC
 
Repubikla en Datos y Mezcales
Repubikla en Datos y Mezcales Repubikla en Datos y Mezcales
Repubikla en Datos y Mezcales
SocialTIC
 
Sintonía en Datos y Mezcales
Sintonía en Datos y MezcalesSintonía en Datos y Mezcales
Sintonía en Datos y Mezcales
SocialTIC
 
Serendipia en Datos y Mezcales
Serendipia en Datos y MezcalesSerendipia en Datos y Mezcales
Serendipia en Datos y Mezcales
SocialTIC
 
Contrataciones abiertas en Datos y Mezcales
Contrataciones abiertas en Datos y MezcalesContrataciones abiertas en Datos y Mezcales
Contrataciones abiertas en Datos y Mezcales
SocialTIC
 
Guia estrategias ciberseguras
Guia estrategias cibersegurasGuia estrategias ciberseguras
Guia estrategias ciberseguras
SocialTIC
 
Informe Gobierno Espía
Informe Gobierno EspíaInforme Gobierno Espía
Informe Gobierno Espía
SocialTIC
 
Métricas para medir el impacto de tu comunicación - Día de Infoactivismo
Métricas para medir el impacto de tu comunicación - Día de InfoactivismoMétricas para medir el impacto de tu comunicación - Día de Infoactivismo
Métricas para medir el impacto de tu comunicación - Día de Infoactivismo
SocialTIC
 
Infoactivismo - Día de Infoactivismo
Infoactivismo - Día de InfoactivismoInfoactivismo - Día de Infoactivismo
Infoactivismo - Día de Infoactivismo
SocialTIC
 
Infoactivismo e ilustración con Criptomiau
Infoactivismo e ilustración con CriptomiauInfoactivismo e ilustración con Criptomiau
Infoactivismo e ilustración con Criptomiau
SocialTIC
 
Aprende a ilustra tu causa con Criptomiau II
Aprende a ilustra tu causa con Criptomiau IIAprende a ilustra tu causa con Criptomiau II
Aprende a ilustra tu causa con Criptomiau II
SocialTIC
 
Aprende a ilustrar tu causa con Criptomiau
Aprende a ilustrar tu causa con CriptomiauAprende a ilustrar tu causa con Criptomiau
Aprende a ilustrar tu causa con Criptomiau
SocialTIC
 
Taller méxico análisis
Taller méxico análisisTaller méxico análisis
Taller méxico análisis
SocialTIC
 
Tutorial uso correcto de los números y estadísticas en periodismo
Tutorial uso correcto de los números y estadísticas en periodismoTutorial uso correcto de los números y estadísticas en periodismo
Tutorial uso correcto de los números y estadísticas en periodismo
SocialTIC
 
Tutorial introducción al análisis de datos con hojas de cálculo
Tutorial  introducción al análisis de datos con hojas de cálculoTutorial  introducción al análisis de datos con hojas de cálculo
Tutorial introducción al análisis de datos con hojas de cálculo
SocialTIC
 
TIC e Interacción Ciudadana para un Parlamento Abierto
TIC e Interacción Ciudadana para un Parlamento AbiertoTIC e Interacción Ciudadana para un Parlamento Abierto
TIC e Interacción Ciudadana para un Parlamento Abierto
SocialTIC
 
Introducción a la Narrativa basada en Datos para OSCs
Introducción a la Narrativa basada en Datos para OSCsIntroducción a la Narrativa basada en Datos para OSCs
Introducción a la Narrativa basada en Datos para OSCs
SocialTIC
 
Introducción al Diseño de Plataformas Digitales
Introducción al Diseño de Plataformas DigitalesIntroducción al Diseño de Plataformas Digitales
Introducción al Diseño de Plataformas Digitales
SocialTIC
 
Violencia de género y TIC (CDHDF, nov. 2014)
Violencia de género y TIC (CDHDF, nov. 2014)Violencia de género y TIC (CDHDF, nov. 2014)
Violencia de género y TIC (CDHDF, nov. 2014)
SocialTIC
 
Introducción al Uso de Datos
Introducción al Uso de DatosIntroducción al Uso de Datos
Introducción al Uso de Datos
SocialTIC
 

Más de SocialTIC (20)

Tecnología Cívica Electoral durante periodo electoral (2009 - 2018) en Latino...
Tecnología Cívica Electoral durante periodo electoral (2009 - 2018) en Latino...Tecnología Cívica Electoral durante periodo electoral (2009 - 2018) en Latino...
Tecnología Cívica Electoral durante periodo electoral (2009 - 2018) en Latino...
 
Repubikla en Datos y Mezcales
Repubikla en Datos y Mezcales Repubikla en Datos y Mezcales
Repubikla en Datos y Mezcales
 
Sintonía en Datos y Mezcales
Sintonía en Datos y MezcalesSintonía en Datos y Mezcales
Sintonía en Datos y Mezcales
 
Serendipia en Datos y Mezcales
Serendipia en Datos y MezcalesSerendipia en Datos y Mezcales
Serendipia en Datos y Mezcales
 
Contrataciones abiertas en Datos y Mezcales
Contrataciones abiertas en Datos y MezcalesContrataciones abiertas en Datos y Mezcales
Contrataciones abiertas en Datos y Mezcales
 
Guia estrategias ciberseguras
Guia estrategias cibersegurasGuia estrategias ciberseguras
Guia estrategias ciberseguras
 
Informe Gobierno Espía
Informe Gobierno EspíaInforme Gobierno Espía
Informe Gobierno Espía
 
Métricas para medir el impacto de tu comunicación - Día de Infoactivismo
Métricas para medir el impacto de tu comunicación - Día de InfoactivismoMétricas para medir el impacto de tu comunicación - Día de Infoactivismo
Métricas para medir el impacto de tu comunicación - Día de Infoactivismo
 
Infoactivismo - Día de Infoactivismo
Infoactivismo - Día de InfoactivismoInfoactivismo - Día de Infoactivismo
Infoactivismo - Día de Infoactivismo
 
Infoactivismo e ilustración con Criptomiau
Infoactivismo e ilustración con CriptomiauInfoactivismo e ilustración con Criptomiau
Infoactivismo e ilustración con Criptomiau
 
Aprende a ilustra tu causa con Criptomiau II
Aprende a ilustra tu causa con Criptomiau IIAprende a ilustra tu causa con Criptomiau II
Aprende a ilustra tu causa con Criptomiau II
 
Aprende a ilustrar tu causa con Criptomiau
Aprende a ilustrar tu causa con CriptomiauAprende a ilustrar tu causa con Criptomiau
Aprende a ilustrar tu causa con Criptomiau
 
Taller méxico análisis
Taller méxico análisisTaller méxico análisis
Taller méxico análisis
 
Tutorial uso correcto de los números y estadísticas en periodismo
Tutorial uso correcto de los números y estadísticas en periodismoTutorial uso correcto de los números y estadísticas en periodismo
Tutorial uso correcto de los números y estadísticas en periodismo
 
Tutorial introducción al análisis de datos con hojas de cálculo
Tutorial  introducción al análisis de datos con hojas de cálculoTutorial  introducción al análisis de datos con hojas de cálculo
Tutorial introducción al análisis de datos con hojas de cálculo
 
TIC e Interacción Ciudadana para un Parlamento Abierto
TIC e Interacción Ciudadana para un Parlamento AbiertoTIC e Interacción Ciudadana para un Parlamento Abierto
TIC e Interacción Ciudadana para un Parlamento Abierto
 
Introducción a la Narrativa basada en Datos para OSCs
Introducción a la Narrativa basada en Datos para OSCsIntroducción a la Narrativa basada en Datos para OSCs
Introducción a la Narrativa basada en Datos para OSCs
 
Introducción al Diseño de Plataformas Digitales
Introducción al Diseño de Plataformas DigitalesIntroducción al Diseño de Plataformas Digitales
Introducción al Diseño de Plataformas Digitales
 
Violencia de género y TIC (CDHDF, nov. 2014)
Violencia de género y TIC (CDHDF, nov. 2014)Violencia de género y TIC (CDHDF, nov. 2014)
Violencia de género y TIC (CDHDF, nov. 2014)
 
Introducción al Uso de Datos
Introducción al Uso de DatosIntroducción al Uso de Datos
Introducción al Uso de Datos
 

Último

AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICOAVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
ronaldomarca1999
 
William James funcionalismo datos relevantes.pdf
William James funcionalismo datos relevantes.pdfWilliam James funcionalismo datos relevantes.pdf
William James funcionalismo datos relevantes.pdf
IvanNievesEspinoza
 
Informe fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docxInforme fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docx
mirimerlos5
 
Libro - Teoria Historia de la Arquitectura
Libro - Teoria Historia de la ArquitecturaLibro - Teoria Historia de la Arquitectura
Libro - Teoria Historia de la Arquitectura
baceg35604
 
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docxInforme 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
francescasansonikoga
 
resumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TIresumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TI
riveroarlett5b
 
Presentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptxPresentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptx
eleandroth
 
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptxReporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
ZuppaSRL
 
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
darkskills2011
 
vivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodosvivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodos
DilmerCarranza
 
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptxUGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
Mayra798665
 
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdfREPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
IrapuatoCmovamos
 
MI CECTOR POSTE BLANCO - Paián .pdf
MI  CECTOR  POSTE  BLANCO - Paián   .pdfMI  CECTOR  POSTE  BLANCO - Paián   .pdf
MI CECTOR POSTE BLANCO - Paián .pdf
GustavoTello19
 
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
hugowagner811
 
Plan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdfPlan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdf
agustincarranza11
 
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllllANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
eliassalascolonia43
 
INTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdfINTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdf
YulEz1
 

Último (17)

AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICOAVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
 
William James funcionalismo datos relevantes.pdf
William James funcionalismo datos relevantes.pdfWilliam James funcionalismo datos relevantes.pdf
William James funcionalismo datos relevantes.pdf
 
Informe fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docxInforme fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docx
 
Libro - Teoria Historia de la Arquitectura
Libro - Teoria Historia de la ArquitecturaLibro - Teoria Historia de la Arquitectura
Libro - Teoria Historia de la Arquitectura
 
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docxInforme 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
 
resumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TIresumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TI
 
Presentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptxPresentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptx
 
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptxReporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
 
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
 
vivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodosvivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodos
 
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptxUGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
 
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdfREPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
 
MI CECTOR POSTE BLANCO - Paián .pdf
MI  CECTOR  POSTE  BLANCO - Paián   .pdfMI  CECTOR  POSTE  BLANCO - Paián   .pdf
MI CECTOR POSTE BLANCO - Paián .pdf
 
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
 
Plan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdfPlan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdf
 
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllllANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
 
INTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdfINTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdf
 

Análisis de datos con R - Techcivica

  • 1. Análisis de datos con R Act. Carlos E. López Natarén INSTITUTO DE FÍSICA • UNAM • 2017
  • 2. Análisis de datos con R MAPA DE RUTA ¿Cómo avanzaremos en este taller? • Nos enfocaremos en R como lenguaje de programación estadística: • Tipos • Funciones • Operaciones con datos
  • 3. Análisis de datos con R MAPA DE RUTA Finalmente veremos qué cosas podemos hacer con los diferentes paquetes modernos: RStudio y Shiny que puede incluir estos paquetes: knitr, devtools, rmarkdown, lubridate, tidyr, ggplot2, dplyr, packrat, readr
  • 4. MAPA DE RUTA ¿Cómo avanzaremos en este taller? • El objetivo final será que tengan una idea general de lo que se puede hacer con R. • No seremos demasiado minuciosos en los detalles, estoy suponiendo que han trabajado con datos anteriormente. Análisis de datos con R
  • 5. MAPA DE RUTA Espero lo disfruten :-) Análisis de datos con R
  • 6. Instalación de R La instalación de R es muy sencilla, tenemos que visitar el siguiente sitio web: http://www.r-project.org/ Análisis de datos con R Una instalación de paquetes en Ubuntu se puede hacer de manera sencilla con la herramienta apt-get sudo apt-get install r-recommended En Windows es point & click y en Mac OS X prácticamente igual.
  • 7. Instalación de R Para instalar desde fuentes es un poco más complicado y hay que instalar una buena cantidad de paquetes de desarrollo: Análisis de datos con R apt-get install build-essential fort77 c-multilib gobjc++ xorg-dev liblzma-dev libblas-dev gfortran aptitude libreadline-dev libjpeg-dev libtiff-dev libcairo- dev default-jre libicu-dev openjdk-6-jdk openjdk-6-jre- lib t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86- nonfree-syriac xfonts-75dpi xfonts-100dpi t1-xfree86- nonfree ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac xfonts-75dpi xfonts-100dpi libjpeg62
  • 8. Historia e introducción al R ¿Qué es R? R es un dialecto del lenguaje S. Entonces… ¿qué es S? S fue/es un lenguaje que fue desarrollado por John Chambers en Bell Labs en los 70’s, fue pensado como un ambiente para el análisis estadístico dentro de la compañía. Análisis de datos con R
  • 9. Historia e introducción al R El sistema fue reescrito en los 80’s en C y es entonces que Chambers y Hastie documentan en el famoso “Statistical Models in S” la funcionalidad del lenguaje para el análisis estadístico. Inicialmente se implementó como una serie de bibliotecas de Fortran, además de que las primeras versiones no contenían funciones para análisis estadístico. Análisis de datos con R
  • 10. Historia e introducción al R Básicamente, S fue pensado como un ambiente interactivo que no necesariamente se puede pensar como un lenguaje de programación, pero mientras el usuario va avanzando utilizando las características de este, entra de manera fácil en prácticas de programación. Análisis de datos con R
  • 11. Historia e introducción al R Provée un acceso relativamente simple a una gran variedad de técnicas estadística y gráficas. Para los usuarios avanzados se ofrece un lenguaje de programación completo con el que añadir nuevas técnicas por medio de la definición de funciones. Análisis de datos con R
  • 12. Historia e introducción al R Análisis de datos con R
  • 13. Historia e introducción al R Características de R • Sintaxis similar a S. • Semántica parecida a S. • Corre en casi cualquier plataforma. • Tiene cambio de versiones muy rápido. Análisis de datos con R
  • 14. Historia e introducción al R Características de R • Muy pequeño, la funcionalidad se le agrega utilizando “paquetes” • Capacidad de graficación bastante madura. • Modo interactivo para probar ideas pero es un lenguaje para hacer nuevas herramientas. Análisis de datos con R
  • 15. Historia e introducción al R Grandes ventajas de R • Tiene muchas funciones estadísticas • Podemos implementar de manera rápida procedimientos estadísticos y de gráficos • Buenos gráficos “base” y más que excelentes gráficos avanzados • Los autores de funciones pueden ser contactados directamente • Una comunidad estimulante y muy activa; las listas R-help, R- devel, y en Stack Overflow • Es software libre • Se ha modernizado con el interés de Microsoft y RStudio Análisis de datos con R
  • 16. Historia e introducción al 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
  • 17. Historia e introducción al R Diseño • Sistema base: utils, stats, datasets, compiler, parallel, tools, methods, splines, tcltk, graphics, grDevices, grid, splines, statS4 • Recomendados: boot, class, cluster, codetools, foreign, kernSmooth, lattice, mgcv, name, rpart, survival, MASS, nnet, Matrix • Nueva generación de paquetes para desarrollo: shiny, knitr, rmarkdown, DT, etc. etc. • Más de 7 mil paquetes contribuidos por usuarios y subidos a CRAN Análisis de datos con R
  • 18. Historia e introducción al R Análisis de datos con R
  • 19. Historia e introducción al R Diferencias con otros paquetes estadísticos • GUI, más reducida en R, eso ha ido cambiando con RStudio • Salida: Menos estadístico, no tablas formateadas • Sintaxis • Selección de variables • Nuevos conceptos: Paquetes, Objetos Análisis de datos con R
  • 20. Historia e introducción al R Documentación básica • An introduction to R • Writing R Extensions • R Data Import/Export • R Installation and Administration • R Internals Análisis de datos con R
  • 21. Introducción al lenguaje Obteniendo ayuda INSTITUTO DE FÍSICA • UNAM • 2017
  • 22. Obteniendo ayuda Hay varias maneras de encontrar ayuda cuando hay problemas en R: • Utilizar el sistema de ayuda de R. • Preguntar a alguien que ya sepa. • Listas de distribución. • Stackoverflow. Análisis de datos con R
  • 23. Obteniendo ayuda El sistema de ayuda del sistema es bastante simple y se puede resumir a tres funciones: help( ) - ? example( ) help.search( ) - ?? library(help = ” ”) vignette( ) Análisis de datos con R
  • 24. Obteniendo ayuda ¿Preguntas? • Experimentar un poco. • Preguntar a alguien con más experiencia. • Leer el código fuente. Análisis de datos con R
  • 25. Introducción al lenguaje Objetos y tipos de datos INSTITUTO DE FÍSICA • UNAM • 2017
  • 26. Objetos y tipos de datos Tipo de objetos en R • Objetos del lenguaje: llamadas, expresiones, nombres. • Expresiones: Colecciones de expresiones correctas no evaluadas. • Funciones: Constan de lista de argumentos, código, entorno. Análisis de datos con R
  • 27. Objetos y tipos de datos Operaciones • Aritméticas: Se pueden usar operaciones con vectores. • Lógicas: Se evalúan de izquierda a derecha, examinando el primer elemento de cada vector. Análisis de datos con R
  • 28. Objetos y tipos de datos Operaciones • Seleccionar elementos de un vector. • Manipular valores perdidos. • Ordenar vectores Análisis de datos con R
  • 29. Objetos y tipos de datos Operaciones • Para operaciones con conjuntos. • Secuencias determinísticas. • Secuencias aleatorias con funciones. Análisis de datos con R
  • 30. Objetos y tipos de datos Objetos Casi todo es un objeto, incluyendo las funciones y estructuras de datos. Para saber qué objetos tenemos usamos ls(). Análisis de datos con R
  • 31. Objetos y tipos de datos Objetos R tiene 5 tipos de objetos básicos o ”atómicos”: • character • numeric • integer • complex • logical Análisis de datos con R
  • 32. Objetos y tipos de datos Objetos El objeto más básico es un vector • Un vector solo puede contener objetos de la misma clase. • La lista se puede ver como un vector de objetos de diferentes clases. • Se pueden crear objetos con la función vector( ). Análisis de datos con R
  • 33. Objetos y tipos de datos Atributos • Los objetos en R pueden tener atributos. • names, dimnames • dimensions (matrices, arreglos) • class • length • Otros atributos definidos por el usuario. • Se pueden acceder usando la función attributes( ). Análisis de datos con R
  • 34. Objetos y tipos de datos Impresión de objetos • El operador : se usa para crear secuencias de enteros Creación de vectores • Utilizamos la función c( ) para crear vectores de objetos. • O también usamos la función vector( ). Análisis de datos con R
  • 35. Objetos y tipos de datos Análisis de datos con R
  • 36. Objetos y tipos de datos Mezcla de objetos • Cuando se mezclan diferentes tipos de objetos, se lleva a cabo una ”coerción”, lo que genera que todos los objetos de un vector sean de la misma clase. Análisis de datos con R
  • 37. Objetos y tipos de datos Coerción explícita • Los objetos puede ser explícitamente coaccionados de una clase a otra, utilizando las funciones as.*: • as.numeric( ) • as.logical( ) • as.character( ) • as.integer( ) Análisis de datos con R
  • 38. Objetos y tipos de datos Cuando la coerción no funciona tan bien • Puede suceder que intentemos coaccionar un vector a un tipo de objeto que puede resultar en algo que no tiene sentido, por ejemplo: Análisis de datos con R
  • 39. 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) Este vector nos indica el # de renglones y de columnas de la matriz Análisis de datos con R
  • 40. Objetos y tipos de datos cbind y rbind • Podemos crear matrices también utilizando cbind y rbind, estas funciones ”pegan” columnas o renglones para crear matrices: Análisis de datos con R
  • 41. Objetos y tipos de datos Listas • Las listas son un tipo especial de vector, que puede contener elementos de diferentes clases, son un tipo de dato muy importante en R porque nos permite llevar a cabo muchas operaciones que serían complicadas si no las aprendemos a usar correctamente. Análisis de datos con R
  • 42. Objetos y tipos de datos Análisis de datos con R
  • 43. Objetos y tipos de datos Factores • Los factores son otro tipo especial de vectores, estos se usan para representar datos categóricos, estos pueden ser ordenados o sin orden. Uno puede pensarlos como un vector de enteros donde cada entero tiene una etiqueta. Análisis de datos con R
  • 44. Objetos y tipos de datos Valores faltantes Los valores faltantes se denotan con NA o NaN para operaciones indefinidas. Podemos probar si estos valores existen en nuestros objetos utilizando las funciones: • is.na( ) • is.nan( ) Los valores NA también tienen una clase, hay enteros NA, character NA, etc. Un valor NaN es al mismo tiempo un NA pero no al contrario. Análisis de datos con R
  • 45. Objetos y tipos de datos Dataframes Este es un tipo en R que nos sirve para guardar datos tabulares. Es uno de los tipos de datos más importantes, o al menos, el tipo de dato que más buscamos encontrarnos, de manera limpia, sin NA’s o NaN’s, ya que con este tipo de datos podemos llevar a cabo todos los análisis que necesitemos de manera fácil. Análisis de datos con R
  • 46. Objetos y tipos de datos Dataframes • Estas se pueden crear utilizando data.frame( ), read.table( ) ó read.csv( ) • Podemos usar también la función data.matrix( ) para convertir un dataframe a matriz. Análisis de datos con R
  • 47. Objetos y tipos de datos Dataframes • Se representan como un tipo especial de lista donde cada elemento de la lista tiene la misma longitud. • Cada elemento de la lista se puede ver como una columna, y la longitud de cada elemento de la lista es el número de renglones. Análisis de datos con R
  • 48. Objetos y tipos de datos Dataframes • Contrario a las matrices, los dataframes pueden guardar diferentes clases en cada columna. • Parecido tiene un atributo llamado row.names Análisis de datos con R
  • 49. Objetos y tipos de datos Análisis de datos con R
  • 50. Introducción al lenguaje Precedencia, operaciones vectoriales y manejo de fechas y tiempo INSTITUTO DE FÍSICA • UNAM • 2017
  • 51. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Retomando el tema de las operaciones básicas Hemos de recordar que existen todas las que pueden existir en una calculadora científica. Análisis de datos con R
  • 52. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Estas pueden ser: binarias: suma, resta: +, - multiplicación, división: *, / módulo %% exponenciación ^ ** división entera %/% Análisis de datos con R
  • 53. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Estas pueden ser: unarias: negación - lógicas: AND lógico: & && OR lógico: | || Análisis de datos con R
  • 54. Precedencia, operaciones vectoriales y manejo de fechas y tiempo La precedencia Cuando introducimos paréntesis es mucho más fácil observar el orden en el que se llevan a cabo las operaciones. En el caso de nuestras operaciones de suma multiplicación y división, se hace así. Análisis de datos con R
  • 55. Reglas de precedencia • Llamadas a funciones y expresiones agrupadas. • Operaciones de indexado y búsqueda. • Aritméticas. • Comparación. • Fórmulas. • Asignación. • Ayuda. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Análisis de datos con R
  • 56. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Operaciones vectorizadas Como ya dijimos, el vector es uno de los elementos básicos del lenguaje, por lo que es de natural definir operaciones sobre ellos de manera que hagan el código más eficiente, conciso y fácil de leer. Estas operaciones se definen así para hacernos a la idea de que las operaciones normales pueden pasar en paralelo. Análisis de datos con R
  • 57. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Análisis de datos con R
  • 58. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Manejo de fechas y tiempos Fechas y tiempos tienen clases especiales en R que nos permite llevar a cabo operaciones numéricas y estadísticas con ellas. Análisis de datos con R
  • 59. Introducción al lenguaje Operaciones básicas y subconjuntos de datos INSTITUTO DE FÍSICA • UNAM • 2017
  • 60. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Subsetting (Tomar un subconjunto) [ ] - extrae elementos de la misma clase. [[ ]] - extrae elementos de una lista o data frame. La clase regresada puede no ser lista o data frame. $ - extrae elementos de un data frame. Análisis de datos con R
  • 61. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Análisis de datos con R
  • 62. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Subsetting de matrices Utilizamos la notación: matriz[x, y] matrix[ ,y] matrix[x, ] Análisis de datos con R
  • 63. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Subsetting de listas Utilizamos la notación: lista[ ] lista[[ ]] (puede ser usado con índices computados) lista$name (solo puede ser usado con nombres literales) Análisis de datos con R
  • 64. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Emparejado parcial Cuando utilizamos nombres, podemos utilizar un emparejado parcial para poder acceder a valores de un objeto utilizando [[ y $ Análisis de datos con R
  • 65. Precedencia, operaciones vectoriales y manejo de fechas y tiempo NA’s Es bien común encontrarse con valores NA (o valores faltantes) también es deseable quitar valores faltantes. Análisis de datos con R
  • 66. Precedencia, operaciones vectoriales y manejo de fechas y tiempo NA’s Si tenemos varios objetos, y queremos los que no son faltantes. Análisis de datos con R
  • 67. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Análisis de datos con R
  • 68. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Análisis de datos con R
  • 69. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Análisis de datos con R
  • 70. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Análisis de datos con R
  • 71. Introducción al lenguaje Operaciones básicas y subconjuntos de datos INSTITUTO DE FÍSICA • UNAM • 2017
  • 72. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Leer datos Una de las operaciones más importantes y más usadas que se llevan a cabo en R es la lectura de datos. Por supuesto, los datos vienen en todo tipo de formatos, tamaños, etc. etc. Análisis de datos con R
  • 73. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Leer datos Hay algunas funciones que vienen en el sistema base de R que nos ayudan a leer datos: • read.table, read.csv • readLines • source • dget • load • unserialize Análisis de datos con R
  • 74. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Escribir datos Hay algunas funciones que vienen en el sistema base de R que nos ayudan a escribir datos también (análogas a las de lectura): • write.table • writeLines • dump • dput • save • serialize Análisis de datos con R
  • 75. Precedencia, operaciones vectoriales y manejo de fechas y tiempo read.table Esta función es la más usada comúnmente para leer datos, de hecho, read.csv por ejemplo, es una versión con parámetros ya establecidos de read.table. Análisis de datos con R
  • 76. Precedencia, operaciones vectoriales y manejo de fechas y tiempo 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
  • 77. Precedencia, operaciones vectoriales y manejo de fechas y tiempo read.table Sus parámetros más importantes son: • file • header • sep • colClasses • nrows • comment.char • skip • stringsAsFactors Análisis de datos con R
  • 78. Precedencia, operaciones vectoriales y manejo de fechas y tiempo read.table Para archivos relativamente pequeños (por ejemplo, menos de un cuarto del tamaño de nuestra memoria RAM), podemos llamar read.table sin especificar argumentos Análisis de datos con R
  • 79. Precedencia, operaciones vectoriales y manejo de fechas y tiempo read.table Por default: • Ignorará las líneas con #. • Averiguará cuantos renglones tenemos. • Averiguará los tipos de variables que va encontrando. Análisis de datos con R
  • 80. Precedencia, operaciones vectoriales y manejo de fechas y tiempo read.table Podemos ser cuidadosos cuando queremos leer archivos muy grandes. • No leer si los datos son mayor a la cantidad de memoria RAM. • Establecer comment.char=”” si no hay líneas comentadas en el archivo Análisis de datos con R
  • 81. Precedencia, operaciones vectoriales y manejo de fechas y tiempo read.table Es importante también, leer la ayuda de read.table, esto nos dará muchos hints sobre cómo es posible mejorar nuestro rendimiento a la hora de leer archivos. Análisis de datos con R
  • 82. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Hints para read.table • Usar el col.Classes. • Establecer nrows desde el principio. Averiguar la clase de cada columna es fácil. col.Classes hará más rápida la lectura, nrows ayuda con el uso de memoria Análisis de datos con R
  • 83. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Análisis de datos con R
  • 84. Precedencia, operaciones vectoriales y manejo de fechas y tiempo read.table Es claro que es importante el conocer las especificaciones de nuestro sistema: • tamaño de la memoria • aplicaciones en uso • usuarios al mismo tiempo • sistema operativo • ¿32 ó 64 bits? Análisis de datos con R
  • 85. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Análisis de datos con R
  • 86. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Cálculo de memoria: Si tenemos por ejemplo, un millón de renglones y 100 columnas, los cuáles son todos de datos numéricos, ¿cuanta memoria se requiere para este dataframe? 1,000,000 X 100 X 8 bytes = 800,000,000 bytes = 727 MB La práctica dice que necesitamos al menos el doble de memoria para trabajar de manera cómoda. Análisis de datos con R
  • 87. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Escribiendo datos Una manera muy simple de escribir datos es usando dump y leer estos de vuelta utilizando source. Análisis de datos con R
  • 88. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Análisis de datos con R
  • 89. Precedencia, operaciones vectoriales y manejo de fechas y tiempo Escribiendo datos Otra es utilizando write.table ó write.csv, estas son similares a read.table y read.csv y será utilizadas a detalle en la práctica. Análisis de datos con R
  • 90. Programación en R Estructuras de control INSTITUTO DE FÍSICA • UNAM • 2017
  • 91. Estructuras de control Estructuras de control Éstas nos permiten controlar el flujo de ejecución de un programa. Dependiendo de si se cumplen ciertas condiciones en el momento, también permiten que se lleven a cabo tareas o una operación de manera repetida. Análisis de datos con R
  • 92. Estructuras de control Estas pueden ser: • Condicionales: if, else • Bucle de repetición: for • Bucle de condición: while • Bucle infinito: repeat • Romper un bucle: break • Saltarse un bucle: next Estructuras de control Análisis de datos con R
  • 93. Estructura de control: if if(condicion){ ## operaciones } else if(condicion2){ ## otra operacion }else{ ## otra operación } Estructuras de control Análisis de datos con R
  • 94. Usos válidos Estructuras de control Análisis de datos con R
  • 95. Por supuesto, también podemos prescindir del else if(condición1) { # operaciones } if(condición2){ # operaciones } Estructuras de control Análisis de datos con R
  • 96. Estructura de control: for for(i in 1:10) { print(i) } Estructuras de control Análisis de datos con R
  • 97. Estructura de control: for for(iterador) { # operaciones } Estructuras de control Análisis de datos con R
  • 98. Por supuesto, también funciona con vectores de números Estructuras de control Análisis de datos con R
  • 99. También existe el clásico bucle anidado con for: ¡No abusen del for anidado! Estructuras de control Análisis de datos con R
  • 100. Estructura de control: while Estructuras de control Análisis de datos con R
  • 101. Estructura de control: repeat y break repeat{ # operaciones if(condición) { break } else { # operaciones } } Estructuras de control Análisis de datos con R
  • 102. Estructura de control: next for(iterador){ if(condición){ # se salta si # cumple la # condición next } # operaciones } Estructuras de control Análisis de datos con R
  • 103. Recordemos: Se deben evitar los bucles infinitos, pueden meter problemas. if, while y for se usan para controlar el flujo de un programa en R. Utilizar estas estructuras en modo interactivo puede volverse truculento, por lo que recomendamos utilizar las funciones *apply. Estructuras de control Análisis de datos con R
  • 104. Programación en R Funciones INSTITUTO DE FÍSICA • UNAM • 2017
  • 105. Funciones Funciones Las funciones se crean usando la función function( ) y se guardan como objetos de R de tipo ”function” Programación en R
  • 107. Hechos importantes de las funciones: Son objetos que se tratan como cualquier otro en R, es decir: Pueden ser pasadas como argumentos de otras funciones. Pueden ser anidadas, i.e. uno puede definir una función dentro de otra. El valor que regresan es la última expresión en ser evaluada en el cuerpo de la función. Programación en R Funciones
  • 108. Argumentos de funciones Las funciones tienen argumentos, que potencialmente puede tener valores por default. Programación en R Funciones
  • 109. Argumentos de funciones Los argumentos formales, son los argumentos que se incluyen en la definición de la función. Programación en R Funciones
  • 110. Argumentos de funciones No toda llamada a una función hace uso de todos los argumentos formales. Programación en R Funciones
  • 111. Argumentos coincidentes Los argumentos en R pueden ser coincidimos posicionalmente o por nombre.
  • 113. Evaluación floja (lazy evaluation) 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
  • 116. El argumento ”…” Usando si un número variable de argumentos se pasarán a otras funciones. Necesario si no se sabe a priori el número de argumentos. Las funciones genéricas lo usan. Programación en R Funciones
  • 118. El argumento ”…” Cualquier argumento después de ”…” tiene que ir nombrado explícitamente y no puede ser parcialmente emparejado. Programación en R Funciones
  • 119. Programación avanzada y sistema de gráficos Funciones *apply INSTITUTO DE FÍSICA • UNAM • 2017
  • 120. Programación avanzada y sistema de gráficos Funciones *apply Funciones *apply apply, sapply, apply, son un grupo especial de funciones vectorizadas, como yo hemos sugerido de manera implícita, es mejor utilizar funciones vectorizadas cuando sea posible, ya que su ejecución se lleva a cabo en paralelo.
  • 121. Funciones *apply Funciones *apply Para comenzar podemos decir que esta familia de funciones se encuentra en el paquete base, y estas se utilizan para manipular ”rebanadas” de datos. Programación avanzada y sistema de gráficos
  • 122. Programación avanzada y sistema de gráficos Graficación con el sistema base de gráficos INSTITUTO DE FÍSICA • UNAM • 2017
  • 123. 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áficosGraficación con el sistema base de gráficos
  • 124. 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áficosGraficación con el sistema base de gráficos
  • 125. 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áficosGraficación con el sistema base de gráficos
  • 126. 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áficosGraficación con el sistema base de gráficos
  • 127. 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áficosGraficación con el sistema base de gráficos
  • 128. 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áficosGraficación con el sistema base de gráficos
  • 129. 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áficosGraficación con el sistema base de gráficos
  • 130. 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áficosGraficación con el sistema base de gráficos
  • 131. 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áficosGraficación con el sistema base de gráficos
  • 132. Al hacer esta regresión, nos quedaría la función: Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos
  • 133. 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áficosGraficación con el sistema base de gráficos
  • 134. 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áficosGraficación con el sistema base de gráficos
  • 135. 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áficosGraficación con el sistema base de gráficos
  • 136. 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áficosGraficación con el sistema base de gráficos
  • 137. 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áficosGraficación con el sistema base de gráficos
  • 138. 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áficosGraficación con el sistema base de gráficos
  • 139. o puede tomar columnas para graficarlas: Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos
  • 140. 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áficosGraficación con el sistema base de gráficos
  • 141. Una vez hecha nuestra gráfica, podemos guardarlas utilizando las opciones de RStudio o desde la línea de comandos con las funciones: • pdf(”archivo.pdf”) • png(”archivo.png”) • jpeg(”archivo.jpg”) • postscript(”archivo.ps”) Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos
  • 142. Resumiendo, tenemos ya varias funciones: plot( ) points( ) abline( ) lines( ) Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos Todas estas tienen parámetros particulares que pueden ayudarnos a modificar la estética de la gráfica
  • 143. Podemos especificar: • fuentes • colores • estilos de línea • ejes • líneas de referencia para eso es necesario leer el manual, particularmente help(par). Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos
  • 144. También hay gráficas donde no necesariamente se tienen que graficar pares de puntos, por ejemplo densidades, gráficas de puntos, de barras, de líneas, histogramas, de caja, etc. Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos
  • 145. 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áficosGraficación con el sistema base de gráficos
  • 146. Gráfica de densidad por kernel Esta es una manera más efectiva de ver la distribución de una variable, para eso tenemos que usar la función density( ) Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos
  • 147. Gráfica de densidad por kernel Si pasamos esto a la función plot, obtenemos entonces: Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos
  • 148. Gráficas de puntos Podemos usar la función dotchart( ) para crear una gráfica de puntos. Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos
  • 149. Gráficas de puntos Graficamos entonces por nombre de carros los galones por millas. Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos
  • 150. 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áficosGraficación con el sistema base de gráficos
  • 151. 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áficosGraficación con el sistema base de gráficos
  • 152. Boxplots Podemos cambiar los parámetros de los títulos y etiquetas para los ejes. Programación avanzada y sistema de gráficosGraficación con el sistema base de gráficos
  • 153. Programación avanzada y sistema de gráficos Colores en el sistema de gráficos INSTITUTO DE FÍSICA • UNAM • 2017
  • 154. Colores Podemos especificar colores de tres maneras: 1. índice. 2. nombre. 3. valor hexadecimal. Programación avanzada y sistema de gráficos Colores y fuentes en el sistema de gráficos
  • 155. Colores Se pueden utilizar funciones específicas para crear vectores de colores: 1. rainbow(n) 2. heat.colors(n) 3. topo.colors(n) 4. cm.colors(n) y 5. colors( ) Programación avanzada y sistema de gráficos Colores y fuentes en el sistema de gráficos
  • 156. Programación avanzada y sistema de gráficos Creación de gráficas en 3D INSTITUTO DE FÍSICA • UNAM • 2017
  • 157. rgl Para poder graficar en tres dimensiones, podemos usar el paquete rgl, este se instala con el comando que ya conocemos: install.packages(”rgl”, dependencies = TRUE) Programación avanzada y sistema de gráficos Creación de gráficas en 3D
  • 158. rgl Una vez instalado rgl, podemos entonces utilizar la función plot3d, donde lo que hacemos es graficar punto por punto, es decir, recibe un vector x, y y z, estos vectores entonces son graficados en tres dimensiones. Programación avanzada y sistema de gráficos Colores y fuentes en el sistema de gráficos
  • 159. Uso de plot3d Por ejemplo, supongamos que tenemos tres vectores, x , y y z y queremos graficar los puntos. Programación avanzada y sistema de gráficos Colores y fuentes en el sistema de gráficos
  • 160. 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
  • 161. Una vez creados los tres vectores, procedemos entonces a abrir el sistema de gráficos de OpenGL para poder graficar nuestros puntos con la función open3d( ) Programación avanzada y sistema de gráficos Colores y fuentes en el sistema de gráficos
  • 162. 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
  • 163. 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
  • 164. O incluso esferas: Programación avanzada y sistema de gráficos Colores y fuentes en el sistema de gráficos
  • 165. Para guardar un archivo hacemos: rgl.snapshot( filename, fmt = "png", top = TRUE ) snapshot3d( ) Programación avanzada y sistema de gráficos Colores y fuentes en el sistema de gráficos
  • 167. Programación avanzada Expresiones regulares Expresiones regulares Hasta el momento, hemos visto que el lenguaje tiene vectores numéricos y matrices, pero las cadenas de caracteres son muy importantes también.
  • 168. Programación avanzada Expresiones regulares Expresiones regulares Ya hemos visto varias importantes, las fechas por ejemplo, pero también algunos otros tipos, para eso, usamos algunas funciones de R que manipulan cadenas de caracteres.
  • 169. Programación avanzada Expresiones regulares Expresiones regulares Y además de estas funciones, las expresiones regulares nos ayudarán para poder usar bien estas funciones, las expresiones regulares son una especie de comodín, o un atajo para poder referirnos…
  • 170. Programación avanzada Expresiones regulares Expresiones regulares …a una gran cantidad de cadenas. Por ejemplo, la expresión: “[bv]” se refiere a cualquier cadena que contenga la letra b o la letra v.
  • 171. Programación avanzada Expresiones regulares Expresiones regulares En términos más formales, una regexp es una secuencia de caracteres que definen la búsqueda de un patrón, principalmente para hacer coincidencia de patrones con cadenas de caracteres.
  • 172. Programación avanzada Expresiones regulares Funciones para manipular cadenas Ahora veremos algunas funciones importantes para manipular cadenas y finalizaremos con el uso de expresiones regulares para poder usarlas de mejor manera.
  • 173. grep( ) La llamada a grep se hace de la siguiente manera: grep(patrón, x) Programación avanzada Expresiones regulares
  • 174. 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
  • 175. grep( ) donde x es un vector de cadenas, si x tiene n cadenas, entonces grep(patrón, x) nos regresará un vector numérico con los índices del vector en donde el patrón ha sido encontrado. Por supuesto, es sensible a mayúsculas y minúsculas. Programación avanzada Expresiones regulares
  • 176. nchar( ) La función nchar() encuentra la longitud de una cadena. Programación avanzada Expresiones regulares
  • 177. paste( …) paste concatena varias cadenas, regresando una única cadena. Programación avanzada Expresiones regulares
  • 178. sprintf( …) Esta función ensambla una cadena de las partes que la conforman de manera formateada. Programación avanzada Expresiones regulares
  • 179. 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
  • 180. strsplit(x, cadena divisoria) Esta función divide a una cadena en subcadenas basada en la cadena divisoria, es muy útil para cuando encontramos formatos de fechas por ejemplo. Programación avanzada Expresiones regulares
  • 181. 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
  • 182. 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
  • 183. 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
  • 184. help(regexp) Además de que incluso hay libros que enseñan a utilizar expresiones regulares, veremos solo un par de ejemplos que pueden ser muy útiles. Programación avanzada Expresiones regulares
  • 185. Expresiones regulares: [ab] cuando se usan corchetes, es una expresión regular que expresa si alguno de esos caracteres existe dentro del texto. Programación avanzada Expresiones regulares
  • 186. Expresiones regulares: . en una expresión regular en R, significa que no importa qué carácter simple esté. Programación avanzada Expresiones regulares
  • 187. Programación avanzada Expresiones regulares Expresiones regulares: ¿qué pasa si queremos buscar un punto dentro de una cadena?
  • 188. Programación avanzada Graficación con ggplot2 INSTITUTO DE FÍSICA • UNAM • 2017
  • 189. ggplot2 Para fines prácticos, ggplot2 es un paquete que provee gráficos en donde los detalles son dejados al paquete, por ejemplo, donde poner las leyendas y las fuentes correctas. Los valores por omisión de este paquete permiten generar gráficos con mucha calidad que pueden ser utilizados en publicaciones. Programación avanzada Graficación con ggplot2
  • 190. ggplot2 La manera en que funciona es muy diferente al sistema de gráficos base, este funciona en base a capas, comenzando con una capa que muestra los datos crudos, luego se van añadiendo capas de anotaciones y de resúmenes estadísticos. Programación avanzada Graficación con ggplot2
  • 191. ggplot2 Muy al estilo en el que se llevan a cabo los análisis estadísticos, en vez de pasar mucho tiempo haciendo tu gráfico verse agradable a la vista, nos podemos enfocar en crear un gráfico que revele de mejor manera la información de tus datos. Programación avanzada Graficación con ggplot2
  • 192. qplot qplot( ) es la única función que utilizaremos en este taller, ya que podemos hacer una gran cantidad de cosas con ella y además de que aprender la gramática de los gráficos de ggplot2 nos tomaría un curso entero. Programación avanzada Graficación con ggplot2
  • 193. 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
  • 194. 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
  • 195. 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
  • 196. 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
  • 197. diamonds Las variables depth, table, x, y, z se refieren a las dimensiones del diamante. Podemos entonces tomar una muestra aleatoria de este conjunto de datos que llamaremos dchico. Programación avanzada Graficación con ggplot2
  • 198. Programación avanzada Graficación con ggplot2 qplot( ) Ahora podemos crear algunas gráficas. qplot recibe como primer argumento los valores de x que queremos graficar y como segundo argumento los valores de y, justo como con plot( ), la única diferencia es que podemos especificar de donde queremos que tome los datos, ya que diamonds y
  • 199. 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
  • 200. 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
  • 201. 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
  • 202. qplot( ) Los argumentos también pueden ser combinaciones de variables ya existentes Programación avanzada Graficación con ggplot2
  • 203. Atributos estéticos: color Con qplot podemos mapear algún atributo estético a algún valor categórico, por ejemplo, en la siguiente gráfica, podemos agregar información sobre nuestros datos, por ejemplo, podemos agregar el color del diamante. Programación avanzada Graficación con ggplot2
  • 204. 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
  • 205. Atributos estéticos: alpha Cuando nuestro conjunto de datos es demasiado grande, podemos pedir que cada punto que se grafique no lo haga completamente sino con cierta transparencia, este es el alpha, por ejemplo: Programación avanzada Graficación con ggplot2
  • 206. Atributos estéticos: alpha El valor de I(1/100) nos indica cuanto de un punto graficado se pintará, es decir, en el caso de 1/100 necesitaríamos 100 puntos en el mismo lugar para poder pintar un solo punto completamente opaco Programación avanzada Graficación con ggplot2
  • 207. Atributos estéticos: shape El tamaño (size) también es un atributo que podemos manera a alguna variable, por ejemplo, en este caso a una variable llamada table que es una transformación de las variables x, y z. Programación avanzada Graficación con ggplot2
  • 208. Consideraciones estéticas Diferentes tipos de atributos estéticos trabajan mejor con diferentes tipos de variables, por ejemplo, color y shape funcionan bien con variables categóricas Programación avanzada Graficación con ggplot2
  • 209. Consideraciones estéticas mientras que tamaño trabaja mejor con variables continuas, La cantidad de datos también puede hacer una diferencia, si hay muchos datos puede ser difícil distinguir entre diferentes grupos, por lo que usamos faceting Programación avanzada Graficación con ggplot2
  • 210. Atributos estéticos: faceting Este atributo permite que creemos tablas dividiendo los datos en grupos y desplegando la misma gráfica para cada grupo de tal manera que permite la comparación visual inmediata. Programación avanzada Graficación con ggplot2
  • 211. geoms No solo podemos hacer gráficas de dispersión x contra y, también podemos crear otros tipos de gráficos utilizando el parámetro geom, geom viene de geometric object, este describe el tipo de objeto. Programación avanzada Graficación con ggplot2
  • 212. geoms estos son los que hay: geom = ”point” el valor por omisión, ya lo hemos visto. geom = ”smooth” ajusta una curva a los datos y despliega la curva y su error estándar. Programación avanzada Graficación con ggplot2
  • 213. geoms geom = ”boxplot” produce una gráfica de caja para sintetizar la distribución de los datos. Programación avanzada Graficación con ggplot2
  • 214. geoms geom = ”boxplot” produce una gráfica de caja para sintetizar la distribución de los datos. Programación avanzada Graficación con ggplot2
  • 215. geoms geom = “path” y “line” dibujan líneas entre los puntos, pero líneas se puede usar para unir observaciones conectadas de alguna otra manera, line va de izq. a derecha, mientras que path pueden irse en cual. direc. Programación avanzada Graficación con ggplot2
  • 216. geoms también podemos hacer gráficas en 1D geom= “histogram” crea un histograma geom= “freqpoly” un polinomio de frecuencias geom= “density” crea una gráfica de densidad. Programación avanzada Graficación con ggplot2
  • 218. Programación avanzada Simulación Introducción R provee una gran cantidad de funciones matemáticas y estadísticas, de álgebra lineal y de operaciones con conjuntos,
  • 219. 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
  • 220. Funciones matemáticas Los primeros tipos de funciones que veremos son las matemáticas, y son las siguientes: exp( ) Función exponencial log( ) Función logarítmica log10( ) F. logarítmica base 10 sqrt( ) Función raíz cuadrada abs( ) Función valor absoluto sin( ) cos( ) tan( ) F. trigonométricas min( ) max( ) F. máximo y mínimo Programación avanzada Simulación
  • 221. Funciones matemáticas Los primeros tipos de funciones que veremos son las matemáticas, y son las siguientes: which.min( ) y which.max( ) índice del valor mínimo y máximo pmin( ) pmax( ) mínimo y máximo de varios vectores elemento a elemento. sum( ) prod( ) Suma y productos de un vector. cumsum() cumprod( ) Suma y producto acumulativo de elementos de vector. Programación avanzada Simulación
  • 222. Funciones matemáticas Los primeros tipos de funciones que veremos son las matemáticas, y son las siguientes: round( ) Redondea entero más cercano. floor( ) Redondeo al entero abajo ceiling( ) Redondeo al entero arriba factorial( ) Función factorial Programación avanzada Simulación
  • 223. Funciones para álgebra lineal No hemos hablado mucho de este tipo de operaciones, pero son muy importantes, ya sabemos que podemos multiplicar por ejemplo un vector por un escalar. Programación avanzada Simulación
  • 224. Funciones para álgebra lineal Una función muy útil es la función crossprod( ) que nos encuentra el producto punto de dos vectores con la misma dimensión. Programación avanzada Simulación
  • 225. Funciones para álgebra lineal Para la multiplicación de matrices, utilizamos el operador %*% Programación avanzada Simulación
  • 226. 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
  • 227. Funciones para álgebra lineal Este se puede resolver de forma matricial de la siguiente manera: Programación avanzada Simulación
  • 228. 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
  • 229. Funciones para álgebra lineal lineal Y podemos comprobarlo de la siguiente manera: Programación avanzada Simulación
  • 230. Funciones para álgebra lineal También tenemos otras funciones que pueden ser muy útiles para la interacción con matrices. • t( ) matriz transpuesta • qr( ) descomposición QR • chol( ) descomposición de Cholesky • det( ) determinante • eigen( ) eigenvalores, eigenvectores • diag( ) Extrae la diagonal de una matriz cuadrada. • sweep( ) Operaciones de barrido en análisis numérico. Programación avanzada Simulación
  • 231. 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
  • 232. 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
  • 233. 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
  • 234. 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
  • 235. Operaciones de conjuntos Podemos llevar a cabo operaciones de conjuntos: • union(x, y) - Unión • intersect(x, y) - Intersección • setdiff(x, y) - Diferencia • setequal(x, y) - Igualdad • c %in% x Pertenencia de c en x • choose(n, k) Subconjuntos posibles Programación avanzada Simulación
  • 238. 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
  • 239. Funciones de distribuciones estadísticas En general se nombran con un prefijo y el nombre de la distribución: • r para la generación de números aleatorios • p para la función acumulativa. • d para la función de densidad o de probabilidad de masa. • q para cuantiles. Programación avanzada Simulación
  • 240. Funciones de distribuciones estadísticas Hay una gran cantidad de ellas… las más comunes: • dbeta • dbinom • dcauchy • dchisq • dexp • df • dgamma • dgeom • dhyper • dlnorm • dmultinom • dnbinom • dnorm • dpois • dt • dunif • dweibull Programación avanzada Simulación
  • 243. Simulación Todas estas funciones nos pueden servir para llevar a cabo simulaciones de diferentes problemas que nos pudiéramos plantear. Programación avanzada Simulación
  • 244. Programación avanzada Shiny INSTITUTO DE FÍSICA • UNAM • 2017
  • 245. Shiny Shiny es un marco de desarrollo web para R, esto nos permite convertir nuestros análisis o gráficas en aplicaciones interactivas en el web. La gran ventaja es que no necesitamos saber (demasiado) de HTML, CSS, JavaScript. Programación avanzada Shiny
  • 247. Programación avanzada Shiny library(shiny) ui <- fluidPage() server <- function(input, output){} shinyApp(ui = ui, server = server)
  • 248. library(shiny) ui <- fluidPage(“Hola Mundo”) server <- function(input, output){} shinyApp(ui = ui, server = server) Programación avanzada Shiny
  • 251. library(shiny) ui <- fluidPage( # *Input() , # *Output ) Programación avanzada Shiny Básicamente todo se tiene que meter va como funciones dentro de fluidPage, pero pueden haber más cosas:
  • 252. library(shiny) sliderInput(inputId = “num”, label = “Escoge un número”, value = 25, min = 1, max = 100) Programación avanzada Shiny Probemos el siguiente código:
  • 253. library(shiny) ui <- fluidPage( sliderInput(inputId = “num”, label = “Escoge un número”, value = 25, min = 1, max = 100) ) server <- function(input, output){} shinyApp(ui = ui, server = server) Programación avanzada Shiny Podemos meter esto en nuestra aplicación de la siguiente manera:
  • 254. sliderInput(inputId = “num”, label = “Escoge un número”, value = 25, min = 1, max = 100) Programación avanzada Shiny La sintaxis es importante:
  • 255. Programación avanzada Shiny Podemos usar otras funciones para el input:
  • 256. library(shiny) ui <- fluidPage( sliderInput(inputId = “num”, label = “Escoge un número”, value = 25, min = 1, max = 100), plotOutput(“hist”) ) server <- function(input, output){} shinyApp(ui = ui, server = server) Programación avanzada Shiny Ahora tenemos que decirle al server qué hacer con estos datos para que nos funcionen:
  • 257. library(shiny) ui <- fluidPage( sliderInput(inputId = “num”, label = “Escoge un número”, value = 25, min = 1, max = 100), plotOutput(“hist”) ) server <- function(input, output){ output$hist <- renderPlot({ hist(rnorm(100), breaks = input$num) }) } shinyApp(ui = ui, server = server) Programación avanzada Shiny Ahora tenemos que decirle al server qué hacer con estos datos para que nos funcionen:
  • 258. Programación avanzada Shiny Dependiendo del valor que escojamos, será el valor que tomará el input.
  • 259. Programación avanzada Shiny Podemos usar otras cosas para el output:
  • 260. BibliografíaLibros que son muy útiles INSTITUTO DE FÍSICA • UNAM • 2017
  • 261. Introducción a la Programación Estadística con R Bibliografía, Libros, referencias y notas útiles ¡¡¡¡Buenas noticias!!!
  • 262. Introducción a la Programación Estadística con R Bibliografía, Libros, referencias y notas útiles
  • 263. Introducción a la Programación Estadística con R Bibliografía, Libros, referencias y notas útiles
  • 264. Introducción a la Programación Estadística con R Bibliografía, Libros, referencias y notas útiles