100% encontró este documento útil (1 voto)
188 vistas266 páginas

Los Datos Con R

Este documento describe la introducción a R como lenguaje de programación estadística, incluyendo su instalación, historia, tipos de objetos y cómo obtener ayuda. Se enfoca en explicar los conceptos básicos de R.

Cargado por

Jesus Jacobe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
188 vistas266 páginas

Los Datos Con R

Este documento describe la introducción a R como lenguaje de programación estadística, incluyendo su instalación, historia, tipos de objetos y cómo obtener ayuda. Se enfoca en explicar los conceptos básicos de R.

Cargado por

Jesus Jacobe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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
Análisis de datos con R
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/

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.
Análisis de datos con R
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:
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
Análisis de datos con R
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

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.

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.
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
Introducción al lenguaje
Obteniendo ayuda

INSTITUTO DE FÍSICA • UNAM • 2017


Análisis de datos con R
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.


Introducción al lenguaje
Objetos y tipos de datos

INSTITUTO DE FÍSICA • UNAM • 2017


Análisis de datos con R
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
Introducción al lenguaje
Precedencia, operaciones vectoriales y manejo de fechas y tiempo

INSTITUTO DE FÍSICA • UNAM • 2017


Análisis de datos con R
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
Precedencia, operaciones vectoriales y manejo de fechas y tiempo

Reglas de precedencia

• Llamadas a funciones y expresiones agrupadas.


• Operaciones de indexado y búsqueda.
• Aritméticas.
• Comparación.
• Fórmulas.
• Asignación.
• Ayuda.
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.
Introducción al lenguaje
Operaciones básicas y subconjuntos de datos

INSTITUTO DE FÍSICA • UNAM • 2017


Análisis de datos con R
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
Introducción al lenguaje
Operaciones básicas y subconjuntos de datos

INSTITUTO DE FÍSICA • UNAM • 2017


Análisis de datos con R
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.
Programación en R
Estructuras de control

INSTITUTO DE FÍSICA • UNAM • 2017


Análisis de datos con R
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

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
Análisis de datos con R
Estructuras de control

Estructura de control: if

if(condicion){
## operaciones
} else if(condicion2){
## otra operacion
}else{
## otra operación
}
Análisis de datos con R
Estructuras de control

Usos válidos
Análisis de datos con R
Estructuras de control

Por supuesto, también podemos


prescindir del else

if(condición1) {
# operaciones
}

if(condición2){
# operaciones
}
Análisis de datos con R
Estructuras de control

Estructura de
control: for

for(i in 1:10) {
print(i)
}
Análisis de datos con R
Estructuras de control

Estructura de
control: for

for(iterador) {
# operaciones
}
Análisis de datos con R
Estructuras de control

Por supuesto,
también funciona
con vectores de
números
Análisis de datos con R
Estructuras de control

También existe el
clásico bucle
anidado con for:

¡No abusen del for


anidado!
Análisis de datos con R
Estructuras de control

Estructura de
control: while
Análisis de datos con R
Estructuras de control

Estructura de control:
repeat y break

repeat{
# operaciones

if(condición) {
break
}
else {
# operaciones
}
}
Análisis de datos con R
Estructuras de control

Estructura de control: next

for(iterador){
if(condición){
# se salta si
# cumple la
# condición
next
}
# operaciones
}
Análisis de datos con R
Estructuras de control

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.
Programación en R
Funciones

INSTITUTO DE FÍSICA • UNAM • 2017


Programación en R
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
Funciones

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.
Argumentos coincidentes

Los argumentos en R pueden


ser coincidimos
posicionalmente o por nombre.
Programación en R
Funciones

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 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.
Programación avanzada y sistema de gráficos
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
Graficación con el sistema base de gráficos

INSTITUTO DE FÍSICA • UNAM • 2017


Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Gráficos base
En esta lección cubriremos lo
básico relativo al sistema base o
tradicional de graficación de R.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

La función plot( )
La función más básica para
traficar es la función plot( ), esta
forma la base de una gráfica y a
partir de esta podemos construir
gráficas más complejas
añadiendo desde líneas y puntos,
hasta poner leyendas.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

La función
plot( )
plot( ) es una función
genérica, es decir que la
función que lleva a cabo
depende del tipo de
objeto con el que es
llamado. Por ejemplo, si
lo llamamos con dos
vectores obtenemos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

La función
plot( )
Si quisiéramos cambiar
el tipo de caracter,
solamente tenemos que
modificar el parámetro
pch=”X” para especificar
el carácter que usará
para graficar los puntos
que queremos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

La función
plot( )
Esta función funciona por
etapas, es decir que
podemos construir nuestra
gráfica en etapas dándole
al sistema una serie de
comandos, por ejemplo,
para comenzar podríamos
querer una gráfica vacía
con solamente ejes:
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

La función
plot( )
Con esto ya tenemos
una gráfica vacía lista
para la siguiente etapa,
en nuestro caso,
añaderemos algunos
puntos y los
graficaremos encima de
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

La función
plot( )
Una vez hecho esto,
procederemos a usar la
función lm para que
guarde un modelo lineal
en el objeto mi_linea y
lo graficaremos
utilizando la función
abline y ese objeto.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Si observamos el
objeto mi_linea,
podemos ver que
este objeto tiene
dentro de sí la
fórmula con que se
llamó y además los
valores de hacer
una regresión lineal
con los tres puntos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Si observamos el
objeto mi_linea,
podemos ver que
este objeto tiene
dentro de sí la
fórmula con que se
llamó y además los
valores de hacer
una regresión lineal
con los tres puntos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Al hacer esta
regresión, nos
quedaría la
función:
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Es importante
observar cómo
estamos usando
por primera vez,
una función que
regresa un modelo
y que recibe como
argumento una
fórmula.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

lm recibe un argumento
llamado formula que se
lee así: y explicado por
x, y lo que hace lm es
intentar ajustar un
modelo de regresión
lineal a y con los valores
que tenga de x. al
ejecutarse lm, este
regresa los coeficientes
de la regresión
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Al ejecutarse lm,
este regresa los
coeficientes de la
regresión y el
objeto en donde
se guarda esto
es de clase lm,
i.e. un modelo
lineal.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Continuando con
nuestra gráfica,
usando la función
lines, podemos
graficar una línea
con ella, los
argumentos son un
vector de valores x
y otro de valores y:
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Por supuesto,
podemos
cambiar también
el color de la
línea de nuestra
gráfica con el
parámetro
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

plot() como ya
dijimos, es una
función genérica, por
lo que también
podemos pedir que
nos grafique un
dataframe completo,
por ejemplo iris
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

o puede tomar
columnas para
graficarlas:
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Podemos
guardar nuestra
gráfica, utilizando
la función Export
en la parte de
gráficos de
RStudio.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

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áficos
Graficación con el sistema base de
gráficos

Resumiendo,
Todas estas tienen
tenemos ya varias
parámetros
funciones:
particulares que
pueden ayudarnos a
plot( )
modificar la estética
points( )
de la gráfica
abline( )
lines( )
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Podemos especificar:

• fuentes
• colores
• estilos de línea
• ejes
• líneas de referencia

para eso es necesario leer el manual,


particularmente help(par).
Programación avanzada y sistema de gráficos
Graficació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áficos
Graficació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áficos
Graficació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áficos
Graficació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áficos
Graficación con el sistema base de
gráficos

Gráficas de
puntos

Podemos usar la
función
dotchart( ) para
crear una gráfica
de puntos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Gráficas de
puntos

Graficamos
entonces por
nombre de carros
los galones por
millas.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Boxplots

Estas gráficas
nos dan una idea
de cómo se está
comportando la
dispersión de los
datos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Boxplots

Estas gráficas
nos dan una idea
de cómo se está
comportando la
dispersión de los
datos.
Programación avanzada y sistema de gráficos
Graficación con el sistema base de
gráficos

Boxplots

Podemos
cambiar los
parámetros de
los títulos y
etiquetas para los
ejes.
Programación avanzada y sistema de gráficos
Colores en el sistema de gráficos

INSTITUTO DE FÍSICA • UNAM • 2017


Programación avanzada y sistema de gráficos
Colores y fuentes en el sistema de gráficos

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
1. rainbow(n)
2. heat.colors(n)
Se pueden utilizar
3. topo.colors(n)
funciones específicas
4. cm.colors(n) y
para crear vectores
5. colors( )
de colores:
Programación avanzada y sistema de gráficos
Creación de gráficas en 3D

INSTITUTO DE FÍSICA • UNAM • 2017


Programación avanzada y sistema de gráficos
Creación de gráficas en 3D

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
Colores y fuentes en el sistema de gráficos

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
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.
Programación avanzada
Expresiones regulares

grep( )

La llamada a grep
se hace de la
siguiente manera:

grep(patrón, x)
Programación avanzada
Expresiones regulares

grep( )

donde x es un vector de
cadenas, si x tiene n
cadenas, entonces
grep(patrón, x) nos
regresará un vector.
Programación avanzada
Expresiones regulares

grep( )

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

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


Programación avanzada
Graficación con ggplot2

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

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
Programación avanzada
Graficación con ggplot2

qplot( )

ahora podemos
cambiar un poco esto
utilizando el dataframe
dchico utilizando ese
nombre de dataset
como argumento:
Programación avanzada
Graficación con ggplot2

qplot( )

Podemos observar
que hay cierta
correlación y algunas
”estrías”, la relación
parece exponencial,
por lo que llevaremos
a cabo una
transformación a las
variables:
Programación avanzada
Graficación con ggplot2

qplot( )

Se puede observar
también que hay
sobre graficación de
puntos, por lo que no
podemos llevar a cabo
conclusiones tan
pronto.
Programación avanzada
Graficación con ggplot2

qplot( )

Los argumentos
también pueden ser
combinaciones de
variables ya existentes
Programación avanzada
Atributos estéticos:
Graficación con ggplot2

color

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
Atributos estéticos:
Graficación con ggplot2

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

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

exp( ) Función exponencial


log( ) Función logarítmica
Funciones matemáticas log10( ) F. logarítmica base
10
Los primeros tipos de sqrt( ) Función raíz cuadrada
funciones que veremos son abs( ) Función valor absoluto
las matemáticas, y son lassin( ) cos( ) tan( ) F.
siguientes: trigonométricas
min( ) max( ) F. máximo y
mínimo
Programación avanzada
Simulación

which.min( ) y which.max( )
índice del valor mínimo y máximo

pmin( ) pmax( ) mínimo y


Funciones matemáticas máximo de varios vectores
elemento a elemento.
Los primeros tipos de
funciones que veremos son sum( ) prod( ) Suma y productos
las matemáticas, y son las de un vector.
siguientes:
cumsum() cumprod( ) Suma y
producto acumulativo de
elementos de vector.
Programación avanzada
Simulación

round( ) Redondea
Funciones entero más cercano.
matemáticas floor( ) Redondeo al
entero abajo
Los primeros tipos de ceiling( ) Redondeo al
funciones que veremos entero arriba
son las matemáticas, y factorial( ) Función
son las siguientes: factorial
Programación avanzada
Simulación

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

• t( ) matriz transpuesta
• qr( ) descomposición QR
• chol( ) descomposición
Funciones para álgebra de Cholesky
lineal • det( ) determinante
• eigen( ) eigenvalores,
También tenemos otras eigenvectores
funciones que pueden ser • diag( ) Extrae la diagonal
muy útiles para la de una matriz cuadrada.
interacción con matrices. • sweep( ) Operaciones de
barrido en análisis
numérico.
Programación avanzada
Simulación

Funciones para
álgebra lineal

También tenemos
otras funciones que
pueden ser muy útiles
para la interacción con
matrices.
Programación avanzada
Simulación

Funciones para
álgebra lineal

También tenemos
otras funciones que
pueden ser muy útiles
para la interacción con
matrices.
Programación avanzada
Simulación

Funciones utilitarias

sort( )

Esta función se
encarga de
regresarnos el vector
de entrada pero de
forma ordenada, ya
sea de forma
creciente o
Programación avanzada
Simulación

choose(n, k )

Esta función
encuentra el número
de posibles
subconjuntos de
tamaño k escogidos
de un conjunto de
tamaño n.
Programación avanzada
Simulación

union(x, y) - Unión

• intersect(x, y) -
Operaciones de Intersección
conjuntos • setdiff(x, y) - Diferencia
• setequal(x, y) -
Podemos llevar a cabo Igualdad
operaciones de conjuntos: c %in% x Pertenencia

de c en x
• choose(n, k)
Subconjuntos posibles
Programación avanzada
Simulación

Operaciones de
conjuntos

Por ejemplo:
Programación avanzada
Simulación

Operaciones de
conjuntos

Por ejemplo:
Programación avanzada
Simulación

Funciones de
distribuciones
estadísticas

R tiene prácticamente
toda función de
distribución
estadísticas,
principalmente las
más conocidas.
Programación avanzada
Simulación

• r para la generación de
números aleatorios
Funciones de
distribuciones • p para la función
estadísticas acumulativa.

En general se nombran • d para la función de


con un prefijo y el nombre densidad o de
de la distribución: probabilidad de masa.

• q para cuantiles.
Programación avanzada
Simulación

• dbeta
• dbinom
• dcauchy
• dchisq
Funciones de • dexp
• df
distribuciones • dgamma
estadísticas • dgeom
• dhyper
• dlnorm
• dmultinom
Hay una gran cantidad de • dnbinom
ellas… las más comunes: • dnorm
• dpois
• dt
• dunif
• dweibull
Programación avanzada
Simulación

Funciones de
distribuciones
estadísticas

Un ejemplo:
Programación avanzada
Simulación
Programación avanzada
Simulación

Simulación

Todas estas funciones


nos pueden servir
para llevar a cabo
simulaciones de
diferentes problemas
que nos pudiéramos
plantear.
Programación avanzada
Shiny

INSTITUTO DE FÍSICA • UNAM • 2017


Programación avanzada
Shiny

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

library(shiny)

ui <- fluidPage()

server <- function(input, output){}

shinyApp(ui = ui, server = server)


Programación avanzada
Shiny

library(shiny)

ui <- fluidPage(“Hola Mundo”)

server <- function(input, output){}

shinyApp(ui = ui, server = server)


Programación avanzada
Shiny

Inputs
Programación avanzada
Shiny

Ouputs
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)

ui <- fluidPage(
# *Input() ,
# *Output

)
Programación avanzada
Shiny

Probemos el siguiente código:


library(shiny)

sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100)
Programación avanzada
Shiny

Podemos meter esto en nuestra aplicación de


la siguiente manera:

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

La sintaxis es importante:

sliderInput(inputId = “num”,
label = “Escoge un número”,
value = 25, min = 1, max = 100)
Programación avanzada
Shiny

Podemos usar otras funciones para el input:


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){}

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

Dependiendo del valor que escojamos, será el


valor que tomará el input.
Programación avanzada
Shiny

Podemos usar otras cosas para el output:


Bibliografía
Libros 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
Programación avanzada
Shiny

Muchas gracias :-)


[email protected]
Programación avanzada
Shiny

Business inquires?
[email protected]

También podría gustarte