Análisis de datos con R - Techcivica

266
Análisis de datos con R Act. Carlos E. López Natarén INSTITUTO DE FÍSICA • UNAM • 2017

Transcript of Análisis de datos con R - Techcivica

  • Anlisis de datos con RAct. Carlos E. Lpez Natarn

    INSTITUTO DE FSICA UNAM 2017

  • Anlisis de datos con RMAPA DE RUTA

    Cmo avanzaremos en este taller?

    Nos enfocaremos en R como lenguaje de programacin estadstica: Tipos Funciones Operaciones con datos

  • Anlisis de datos con RMAPA 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

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

    Anlisis de datos con R

  • MAPA DE RUTA

    Espero lo disfruten :-)

    Anlisis de datos con R

  • Instalacin de R

    La instalacin de R es muy sencilla, tenemos que visitar el siguiente sitio web:

    http://www.r-project.org/

    Anlisis de datos con R

    Una instalacin de paquetes en Ubuntu se puede hacer de manera sencilla con la herramienta apt-getsudo apt-get install r-recommendedEn Windows es point & click y en Mac OS X prcticamente igual.

    http://www.r-project.org/

  • Instalacin de R

    Para instalar desde fuentes es un poco ms complicado y hay que instalar una buena cantidad de paquetes de desarrollo:

    Anlisis de datos con R

    apt-get install build-essential fort77 c-multilib gobjc++ xorg-dev liblzma-dev libblas-dev gfortranaptitude 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 introduccin 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 70s, fue pensado como un ambiente para el anlisis estadstico dentro de la compaa.

    Anlisis de datos con R

  • Historia e introduccin al R

    El sistema fue reescrito en los 80s en C y es entonces que Chambers y Hastie documentan en el famoso Statistical Models in S la funcionalidad del lenguaje para el anlisis estadstico.

    Inicialmente se implement como una serie de bibliotecas de Fortran, adems de que las primeras versiones no contenan funciones para anlisis estadstico.

    Anlisis de datos con R

  • Historia e introduccin al R

    Bsicamente, S fue pensado como un ambiente interactivo que no necesariamente se puede pensar como un lenguaje de programacin, pero mientras el usuario va avanzando utilizando las caractersticas de este, entra de manera fcil en prcticas de programacin.

    Anlisis de datos con R

  • Historia e introduccin al R

    Prove un acceso relativamente simple a una gran variedad de tcnicas estadstica y grficas.

    Para los usuarios avanzados se ofrece un lenguaje de programacin completo con el que aadir nuevas tcnicas por medio de la definicin de funciones.

    Anlisis de datos con R

  • Historia e introduccin al RAnlisis de datos con R

  • Historia e introduccin al R

    Caractersticas de R

    Sintaxis similar a S.

    Semntica parecida a S.

    Corre en casi cualquier plataforma.

    Tiene cambio de versiones muy rpido.

    Anlisis de datos con R

  • Historia e introduccin al R

    Caractersticas de R

    Muy pequeo, la funcionalidad se le agrega utilizando paquetes

    Capacidad de graficacin bastante madura.

    Modo interactivo para probar ideas pero es un lenguaje para hacer nuevas herramientas.

    Anlisis de datos con R

  • Historia e introduccin al R

    Grandes ventajas de R

    Tiene muchas funciones estadsticas Podemos implementar de manera rpida procedimientos

    estadsticos y de grficos Buenos grficos base y ms que excelentes grficos

    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 inters de Microsoft y RStudio

    Anlisis de datos con R

  • Historia e introduccin al R

    Desventajas

    Tecnologa vieja Sin sistema de grficos 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 ms generales

    Anlisis de datos con R

  • Historia e introduccin al R

    Diseo

    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 generacin de paquetes para desarrollo: shiny, knitr, rmarkdown, DT, etc. etc.

    Ms de 7 mil paquetes contribuidos por usuarios y subidos a CRAN

    Anlisis de datos con R

  • Historia e introduccin al RAnlisis de datos con R

  • Historia e introduccin al R

    Diferencias con otros paquetes estadsticos

    GUI, ms reducida en R, eso ha ido cambiando con RStudio

    Salida: Menos estadstico, no tablas formateadas

    Sintaxis

    Seleccin de variables

    Nuevos conceptos: Paquetes, Objetos

    Anlisis de datos con R

  • Historia e introduccin al R

    Documentacin bsica

    An introduction to R

    Writing R Extensions

    R Data Import/Export

    R Installation and Administration

    R Internals

    Anlisis de datos con R

  • Introduccin al lenguajeObteniendo ayuda

    INSTITUTO DE FSICA 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 distribucin.

    Stackoverflow.

    Anlisis 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( )

    Anlisis de datos con R

  • Obteniendo ayuda

    Preguntas?

    Experimentar un poco.

    Preguntar a alguien con ms experiencia.

    Leer el cdigo fuente.

    Anlisis de datos con R

  • Introduccin al lenguajeObjetos y tipos de datos

    INSTITUTO DE FSICA 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, cdigo, entorno.

    Anlisis de datos con R

  • Objetos y tipos de datos

    Operaciones

    Aritmticas: Se pueden usar operaciones con vectores.

    Lgicas: Se evalan de izquierda a derecha, examinando el primer elemento de cada vector.

    Anlisis de datos con R

  • Objetos y tipos de datos

    Operaciones

    Seleccionar elementos de un vector.

    Manipular valores perdidos.

    Ordenar vectores

    Anlisis de datos con R

  • Objetos y tipos de datos

    Operaciones

    Para operaciones con conjuntos.

    Secuencias determinsticas.

    Secuencias aleatorias con funciones.

    Anlisis 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().

    Anlisis de datos con R

  • Objetos y tipos de datos

    Objetos

    R tiene 5 tipos de objetos bsicos o atmicos:

    character numeric integer complex logical

    Anlisis de datos con R

  • Objetos y tipos de datos

    ObjetosEl objeto ms bsico 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 funcin vector( ).

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

    attributes( ).

    Anlisis de datos con R

  • Objetos y tipos de datos

    Impresin de objetos

    El operador : se usa para crear secuencias de enteros

    Creacin de vectores

    Utilizamos la funcin c( ) para crear vectores de objetos.

    O tambin usamos la funcin vector( ).

    Anlisis de datos con R

  • Objetos y tipos de datosAnlisis de datos con R

  • Objetos y tipos de datos

    Mezcla de objetos

    Cuando se mezclan diferentes tipos de objetos, se lleva a cabo una coercin, lo que genera que todos los objetos de un vector sean de la misma clase.

    Anlisis de datos con R

  • Objetos y tipos de datos

    Coercin explcita

    Los objetos puede ser explcitamente coaccionados de una clase a otra, utilizando las funciones as.*:

    as.numeric( ) as.logical( ) as.character( ) as.integer( )

    Anlisis de datos con R

  • Objetos y tipos de datos

    Cuando la coercin 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:

    Anlisis 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 dimensin. La dimensin es un atributo que es un vector entero de tamao 2:

    (nrow, ncol)

    Este vector nos indica el # de renglones y de columnas de la matriz

    Anlisis de datos con R

  • Objetos y tipos de datos

    cbind y rbind

    Podemos crear matrices tambin utilizando cbind y rbind, estas funciones pegan columnas o renglones para crear matrices:

    Anlisis 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 seran complicadas si no las aprendemos a usar correctamente.

    Anlisis de datos con R

  • Objetos y tipos de datosAnlisis de datos con R

  • Objetos y tipos de datos

    Factores

    Los factores son otro tipo especial de vectores, estos se usan para representar datos categricos, estos pueden ser ordenados o sin orden. Uno puede pensarlos como un vector de enteros donde cada entero tiene una etiqueta.

    Anlisis 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 tambin tienen una clase, hay enteros NA, character NA, etc.Un valor NaN es al mismo tiempo un NA pero no al contrario.

    Anlisis 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 ms importantes, o al menos, el tipo de dato que ms buscamos encontrarnos, de manera limpia, sin NAs o NaNs, ya que con este tipo de datos podemos llevar a cabo todos los anlisis que necesitemos de manera fcil.

    Anlisis de datos con R

  • Objetos y tipos de datos

    Dataframes

    Estas se pueden crear utilizando data.frame( ), read.table( ) read.csv( )

    Podemos usar tambin la funcin data.matrix( ) para convertir un dataframe a matriz.

    Anlisis 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 nmero de renglones.

    Anlisis 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

    Anlisis de datos con R

  • Objetos y tipos de datosAnlisis de datos con R

  • Introduccin al lenguajePrecedencia, operaciones vectoriales y manejo de fechas y tiempo

    INSTITUTO DE FSICA UNAM 2017

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Retomando el tema de las operaciones bsicas

    Hemos de recordar que existen todas las que pueden existir en una calculadora cientfica.

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Estas pueden ser:

    binarias:

    suma, resta: +, - multiplicacin, divisin: *, /mdulo %%exponenciacin ^ ** divisin entera %/%

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Estas pueden ser:

    unarias:negacin -

    lgicas:AND lgico: & &&OR lgico: | ||

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    La precedencia

    Cuando introducimos parntesis es mucho ms fcil observar el orden en el que se llevan a cabo las operaciones.

    En el caso de nuestras operaciones de suma multiplicacin y divisin, se hace as.

    Anlisis de datos con R

  • Reglas de precedencia

    Llamadas a funciones y expresiones agrupadas. Operaciones de indexado y bsqueda. Aritmticas. Comparacin. Frmulas. Asignacin. Ayuda.

    Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Anlisis 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 bsicos del lenguaje, por lo que es de natural definir operaciones sobre ellos de manera que hagan el cdigo ms eficiente, conciso y fcil de leer.

    Estas operaciones se definen as para hacernos a la idea de que las operaciones normales pueden pasar en paralelo.

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Anlisis 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 numricas y estadsticas con ellas.

    Anlisis de datos con R

  • Introduccin al lenguajeOperaciones bsicas y subconjuntos de datos

    INSTITUTO DE FSICA 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.

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Subsetting de matrices

    Utilizamos la notacin:

    matriz[x, y]

    matrix[ ,y]

    matrix[x, ]

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Subsetting de listas

    Utilizamos la notacin:

    lista[ ]

    lista[[ ]] (puede ser usado con ndices computados)

    lista$name (solo puede ser usado con nombres literales)

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

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    NAs

    Es bien comn encontrarse con valores NA (o valores faltantes) tambin es deseable quitar valores faltantes.

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    NAs

    Si tenemos varios objetos, y queremos los que no son faltantes.

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Anlisis de datos con R

  • Introduccin al lenguajeOperaciones bsicas y subconjuntos de datos

    INSTITUTO DE FSICA UNAM 2017

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Leer datos

    Una de las operaciones ms importantes y ms usadas que se llevan a cabo en R es la lectura de datos.

    Por supuesto, los datos vienen en todo tipo de formatos, tamaos, etc. etc.

    Anlisis 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

    Anlisis 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 tambin (anlogas a las de lectura):

    write.table writeLines dump dput save serialize

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    read.table

    Esta funcin es la ms usada comnmente para leer datos, de hecho, read.csv por ejemplo, es una versin con parmetros ya establecidos de read.table.

    Anlisis 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 parmetros preestablecidos.

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    read.table

    Sus parmetros ms importantes son:

    file header sep colClasses nrows comment.char skip stringsAsFactors

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    read.table

    Para archivos relativamente pequeos (por ejemplo, menos de un cuarto del tamao de nuestra memoria RAM), podemos llamar read.table sin especificar argumentos

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    read.table

    Por default:

    Ignorar las lneas con #.

    Averiguar cuantos renglones tenemos.

    Averiguar los tipos de variables que va encontrando.

    Anlisis 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 lneas comentadas en el archivo

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    read.table

    Es importante tambin, leer la ayuda de read.table, esto nos dar muchos hints sobre cmo es posible mejorar nuestro rendimiento a la hora de leer archivos.

    Anlisis 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 fcil.

    col.Classes har ms rpida la lectura, nrows ayuda con el uso de memoria

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

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

    tamao de la memoria aplicaciones en uso usuarios al mismo tiempo sistema operativo 32 64 bits?

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Clculo de memoria:

    Si tenemos por ejemplo, un milln de renglones y 100 columnas, los cules son todos de datos numricos, cuanta memoria se requiere para este dataframe?

    1,000,000 X 100 X 8 bytes = 800,000,000 bytes = 727 MB

    La prctica dice que necesitamos al menos el doble de memoria para trabajar de manera cmoda.

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

    Anlisis de datos con R

  • Precedencia, operaciones vectoriales y manejo de fechas y tiempo

    Anlisis 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 prctica.

    Anlisis de datos con R

  • Programacin en REstructuras de control

    INSTITUTO DE FSICA UNAM 2017

  • Estructuras de control

    Estructuras de control

    stas nos permiten controlar el flujo de ejecucin de un programa. Dependiendo de si se cumplen ciertas condiciones en el momento, tambin permiten que se lleven a cabo tareas o una operacin de manera repetida.

    Anlisis de datos con R

  • Estructuras de control

    Estas pueden ser:

    Condicionales: if, else Bucle de repeticin: for Bucle de condicin: while Bucle infinito: repeat Romper un bucle: break Saltarse un bucle: next

    Estructuras de controlAnlisis de datos con R

  • Estructura de control: if

    if(condicion){ ## operaciones} else if(condicion2){ ## otra operacion}else{ ## otra operacin}

    Estructuras de controlAnlisis de datos con R

  • Usos vlidos

    Estructuras de controlAnlisis de datos con R

  • Por supuesto, tambin podemos prescindir del else

    if(condicin1) { # operaciones}

    if(condicin2){ # operaciones}

    Estructuras de controlAnlisis de datos con R

  • Estructura de control: for

    for(i in 1:10) { print(i)}

    Estructuras de controlAnlisis de datos con R

  • Estructura de control: for

    for(iterador) { # operaciones}

    Estructuras de controlAnlisis de datos con R

  • Por supuesto, tambin funciona con vectores de

    nmeros

    Estructuras de controlAnlisis de datos con R

  • Tambin existe el clsico bucle

    anidado con for:

    No abusen del for anidado!

    Estructuras de controlAnlisis de datos con R

  • Estructura de control: while

    Estructuras de controlAnlisis de datos con R

  • Estructura de control: repeat y break

    repeat{ # operaciones if(condicin) { break } else { # operaciones }}

    Estructuras de controlAnlisis de datos con R

  • Estructura de control: next

    for(iterador){ if(condicin){

    # se salta si # cumple la # condicin

    next } # operaciones}

    Estructuras de controlAnlisis 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 controlAnlisis de datos con R

  • Programacin en RFunciones

    INSTITUTO DE FSICA UNAM 2017

  • Funciones

    Funciones

    Las funciones se crean usando la funcin function( ) y se guardan como objetos de R de tipo function

    Programacin en R

  • Definicin de las funciones

    Programacin en RFunciones

  • 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 funcin dentro de otra.

    El valor que regresan es la ltima expresin en ser evaluada en el cuerpo de la funcin.

    Programacin en RFunciones

  • Argumentos de funciones

    Las funciones tienen argumentos, que potencialmente puede tener valores por default.

    Programacin en RFunciones

  • Argumentos de funciones

    Los argumentos formales, son los argumentos que se incluyen en la definicin de la funcin.

    Programacin en RFunciones

  • Argumentos de funciones

    No toda llamada a una funcin hace uso de todos los argumentos formales.

    Programacin en RFunciones

  • Argumentos coincidentes

    Los argumentos en R pueden ser coincidimos posicionalmente o por nombre.

  • Argumentos coincidentes

    Coincidencia exacta

    Coincidencia parcial

    Coincidencia por posicin

    Programacin en RFunciones

  • Evaluacin floja (lazy evaluation)

    La evaluacin de los argumentos de una funcin son evaluados de manera floja, es decir, solo cuando se necesitan.

    Programacin en RFunciones

  • Evaluacin floja

    Programacin en RFunciones

  • El argumento

    Programacin en RFunciones

  • El argumento

    Usando si un nmero variable de argumentos se pasarn a otras funciones.

    Necesario si no se sabe a priori el nmero de argumentos.

    Las funciones genricas lo usan.

    Programacin en RFunciones

  • El argumento

    Programacin en RFunciones

  • El argumento

    Cualquier argumento despus de tiene que ir nombrado explcitamente y no puede ser parcialmente emparejado.

    Programacin en RFunciones

  • Programacin avanzada y sistema de grficosFunciones *apply

    INSTITUTO DE FSICA UNAM 2017

  • Programacin avanzada y sistema de grficosFunciones *apply

    Funciones *apply

    apply, sapply, apply, son un grupo especial de funciones vectorizadas, como yo hemos sugerido de manera implcita, es mejor utilizar funciones vectorizadas cuando sea posible, ya que su ejecucin 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.

    Programacin avanzada y sistema de grficos

  • Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

    INSTITUTO DE FSICA UNAM 2017

  • Grficos baseEn esta leccin cubriremos lo bsico relativo al sistema base o tradicional de graficacin de R.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • La funcin plot( )La funcin ms bsica para traficar es la funcin plot( ), esta forma la base de una grfica y a partir de esta podemos construir grficas ms complejas aadiendo desde lneas y puntos, hasta poner leyendas.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • La funcin plot( )

    plot( ) es una funcin genrica, es decir que la funcin que lleva a cabo depende del tipo de objeto con el que es llamado. Por ejemplo, si lo llamamos con dos vectores obtenemos.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • La funcin plot( )

    Si quisiramos cambiar el tipo de caracter, solamente tenemos que modificar el parmetro pch=X para especificar el carcter que usar para graficar los puntos que queremos.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • La funcin plot( )

    Esta funcin funciona por etapas, es decir que podemos construir nuestra grfica en etapas dndole al sistema una serie de comandos, por ejemplo, para comenzar podramos querer una grfica vaca con solamente ejes:

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • La funcin plot( )

    Con esto ya tenemos una grfica vaca lista para la siguiente etapa, en nuestro caso, aaderemos algunos puntos y los graficaremos encima de esta.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • La funcin plot( )

    Una vez hecho esto, procederemos a usar la funcin lm para que guarde un modelo lineal en el objeto mi_linea y lo graficaremos utilizando la funcin abline y ese objeto.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Si observamos el objeto mi_linea, podemos ver que este objeto tiene dentro de s la frmula con que se llam y adems los valores de hacer una regresin lineal con los tres puntos.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Si observamos el objeto mi_linea, podemos ver que este objeto tiene dentro de s la frmula con que se llam y adems los valores de hacer una regresin lineal con los tres puntos.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Al hacer esta regresin, nos quedara la funcin:

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Es importante observar cmo estamos usando por primera vez, una funcin que regresa un modelo y que recibe como argumento una frmula.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • 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 regresin lineal a y con los valores que tenga de x. al ejecutarse lm, este regresa los coeficientes de la regresin

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Al ejecutarse lm, este regresa los coeficientes de la regresin y el objeto en donde se guarda esto es de clase lm, i.e. un modelo lineal.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Continuando con nuestra grfica, usando la funcin lines, podemos graficar una lnea con ella, los argumentos son un vector de valores x y otro de valores y:

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Por supuesto, podemos cambiar tambin el color de la lnea de nuestra grfica con el parmetro

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • plot() como ya dijimos, es una funcin genrica, por lo que tambin podemos pedir que nos grafique un dataframe completo, por ejemplo iris

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • o puede tomar columnas para graficarlas:

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Podemos guardar nuestra grfica, utilizando la funcin Export en la parte de grficos de RStudio.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Una vez hecha nuestra grfica, podemos guardarlas utilizando las opciones de RStudio o desde la lnea de comandos con las funciones:

    pdf(archivo.pdf) png(archivo.png) jpeg(archivo.jpg) postscript(archivo.ps)

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Resumiendo, tenemos ya varias funciones:

    plot( )points( )abline( )lines( )

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

    Todas estas tienen parmetros particulares que pueden ayudarnos a modificar la esttica de la grfica

  • Podemos especificar:

    fuentes colores estilos de lnea ejes lneas de referencia

    para eso es necesario leer el manual, particularmente help(par).

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Tambin hay grficas donde no necesariamente se tienen que graficar pares de puntos, por ejemplo densidades, grficas de puntos, de barras, de lneas, histogramas, de caja, etc.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Histogramas y grficas de densidades

    Como el histograma no nos puede dar una visin general, podemos poner un histograma encima para observar cmo se observa la densidad.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Grfica de densidad por kernel

    Esta es una manera ms efectiva de ver la distribucin de una variable, para eso tenemos que usar la funcin density( )

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Grfica de densidad por kernel

    Si pasamos esto a la funcin plot, obtenemos entonces:

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Grficas de puntos

    Podemos usar la funcin dotchart( ) para crear una grfica de puntos.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Grficas de puntos

    Graficamos entonces por nombre de carros los galones por millas.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Boxplots

    Estas grficas nos dan una idea de cmo se est comportando la dispersin de los datos.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Boxplots

    Estas grficas nos dan una idea de cmo se est comportando la dispersin de los datos.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Boxplots

    Podemos cambiar los parmetros de los ttulos y etiquetas para los ejes.

    Programacin avanzada y sistema de grficosGraficacin con el sistema base de grficos

  • Programacin avanzada y sistema de grficosColores en el sistema de grficos

    INSTITUTO DE FSICA UNAM 2017

  • Colores

    Podemos especificar colores de tres maneras:

    1. ndice.2. nombre.3. valor hexadecimal.

    Programacin avanzada y sistema de grficosColores y fuentes en el sistema de grficos

  • Colores

    Se pueden utilizar funciones especficas para crear vectores de colores:

    1. rainbow(n)2. heat.colors(n)3. topo.colors(n)4. cm.colors(n) y5. colors( )

    Programacin avanzada y sistema de grficosColores y fuentes en el sistema de grficos

  • Programacin avanzada y sistema de grficosCreacin de grficas en 3D

    INSTITUTO DE FSICA 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)

    Programacin avanzada y sistema de grficosCreacin de grficas en 3D

  • rgl

    Una vez instalado rgl, podemos entonces utilizar la funcin 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.

    Programacin avanzada y sistema de grficosColores y fuentes en el sistema de grficos

  • Uso de plot3d

    Por ejemplo, supongamos que tenemos tres vectores, x , y y z y queremos graficar los puntos.

    Programacin avanzada y sistema de grficosColores y fuentes en el sistema de grficos

  • Los podemos crear con la funcin rnorm

    Programacin avanzada y sistema de grficosColores y fuentes en el sistema de grficos

  • Una vez creados los tres vectores, procedemos entonces a abrir el sistema de grficos de OpenGL para poder graficar nuestros puntos con la funcin open3d( )

    Programacin avanzada y sistema de grficosColores y fuentes en el sistema de grficos

  • Finalmente graficamos utilizando la funcin plato3d( ), esta funcin nos permitir interactuar con la perspectiva y poder mover el ngulo de vista de tal manera que podamos observar nuestros puntos.

    Programacin avanzada y sistema de grficosColores y fuentes en el sistema de grficos

  • Tambin es posible, usar otro tipo de formas para dibujar los puntos, por ejemplo, podemos usar lneas:

    Programacin avanzada y sistema de grficosColores y fuentes en el sistema de grficos

  • O incluso esferas:

    Programacin avanzada y sistema de grficosColores y fuentes en el sistema de grficos

  • Para guardar un archivo hacemos:

    rgl.snapshot( filename, fmt = "png", top = TRUE )

    snapshot3d( )

    Programacin avanzada y sistema de grficosColores y fuentes en el sistema de grficos

  • Programacin avanzadaExpresiones regulares

    INSTITUTO DE FSICA UNAM 2017

  • Programacin avanzadaExpresiones regulares

    Expresiones regulares

    Hasta el momento, hemos visto que el lenguaje tiene vectores numricos y matrices, pero las cadenas de caracteres son muy importantes tambin.

  • Programacin avanzadaExpresiones regulares

    Expresiones regulares

    Ya hemos visto varias importantes, las fechas por ejemplo, pero tambin algunos otros tipos, para eso, usamos algunas funciones de R que manipulan cadenas de caracteres.

  • Programacin avanzadaExpresiones regulares

    Expresiones regulares

    Y adems de estas funciones, las expresiones regulares nos ayudarn para poder usar bien estas funciones, las expresiones regulares son una especie de comodn, o un atajo para poder referirnos

  • Programacin avanzadaExpresiones regulares

    Expresiones regulares

    a una gran cantidad de cadenas.

    Por ejemplo, la expresin: [bv] se refiere a cualquier cadena que contenga la letra b o la letra v.

  • Programacin avanzadaExpresiones regulares

    Expresiones regulares

    En trminos ms formales, una regexp es una secuencia de caracteres que definen la bsqueda de un patrn, principalmente para hacer coincidencia de patrones con cadenas de caracteres.

  • Programacin avanzadaExpresiones 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(patrn, x)

    Programacin avanzadaExpresiones regulares

  • grep( )

    donde x es un vector de cadenas, si x tiene n cadenas, entonces grep(patrn, x) nos regresar un vector.

    Programacin avanzadaExpresiones regulares

  • grep( )

    donde x es un vector de cadenas, si x tiene n cadenas, entonces grep(patrn, x) nos regresar un vector numrico con los ndices del vector en donde el patrn ha sido encontrado. Por supuesto, es sensible a maysculas y minsculas.

    Programacin avanzadaExpresiones regulares

  • nchar( )

    La funcin nchar() encuentra la longitud de una cadena.

    Programacin avanzadaExpresiones regulares

  • paste( )

    paste concatena varias cadenas, regresando una nica cadena.

    Programacin avanzadaExpresiones regulares

  • sprintf( )

    Esta funcin ensambla una cadena de las partes que la conforman de manera formateada.

    Programacin avanzadaExpresiones regulares

  • substring(x, inicio, trmino)

    La funcin substring, extrae una subcadena de la cadena que le pasemos como parmetro inicial.

    Programacin avanzadaExpresiones regulares

  • strsplit(x, cadena divisoria)

    Esta funcin divide a una cadena en subcadenas basada en la cadena divisoria, es muy til para cuando encontramos formatos de fechas por ejemplo.

    Programacin avanzadaExpresiones regulares

  • regexpr(patrn, texto)

    Esta funcin encuentra la posicin del caracter de la primera instancia del patrn dentro del texto.

    Programacin avanzadaExpresiones regulares

  • gregexpr(patrn, texto)

    Esta funcin encuentra la posicin del carcter de cada instancia del patrn en el texto o cadena.

    Programacin avanzadaExpresiones regulares

  • help(regexp)

    Las expresiones regulares pueden ser muy ricas y complicadas, explicar cada detalle de estas est ms all del objetivo de este curso, pero podemos consultar la pgina del manual.

    Programacin avanzadaExpresiones regulares

  • help(regexp)

    Adems de que incluso hay libros que ensean a utilizar expresiones regulares, veremos solo un par de ejemplos que pueden ser muy tiles.

    Programacin avanzadaExpresiones regulares

  • Expresiones regulares:

    [ab] cuando se usan corchetes, es una expresin regular que expresa si alguno de esos caracteres existe dentro del texto.

    Programacin avanzadaExpresiones regulares

  • Expresiones regulares:

    . en una expresin regular en R, significa que no importa qu carcter simple est.

    Programacin avanzadaExpresiones regulares

  • Programacin avanzadaExpresiones regulares

    Expresiones regulares:

    qu pasa si queremos buscar un punto dentro de una cadena?

  • Programacin avanzadaGraficacin con ggplot2

    INSTITUTO DE FSICA UNAM 2017

  • ggplot2

    Para fines prcticos, ggplot2 es un paquete que provee grficos en donde los detalles son dejados al paquete, por ejemplo, donde poner las leyendas y las fuentes correctas. Los valores por omisin de este paquete permiten generar grficos con mucha calidad que pueden ser utilizados en publicaciones.

    Programacin avanzadaGraficacin con ggplot2

  • ggplot2

    La manera en que funciona es muy diferente al sistema de grficos base, este funciona en base a capas, comenzando con una capa que muestra los datos crudos, luego se van aadiendo capas de anotaciones y de resmenes estadsticos.

    Programacin avanzadaGraficacin con ggplot2

  • ggplot2

    Muy al estilo en el que se llevan a cabo los anlisis estadsticos, en vez de pasar mucho tiempo haciendo tu grfico verse agradable a la vista, nos podemos enfocar en crear un grfico que revele de mejor manera la informacin de tus datos.

    Programacin avanzadaGraficacin con ggplot2

  • qplot

    qplot( ) es la nica funcin que utilizaremos en este taller, ya que podemos hacer una gran cantidad de cosas con ella y adems de que aprender la gramtica de los grficos de ggplot2 nos tomara un curso entero.

    Programacin avanzadaGraficacin con ggplot2

  • qplot

    Haremos diferentes grficos sencillos utilizando diferentes geoms, aprenderemos cmo mapear variables a atributos estticos como colores, tamaos y formas

    Programacin avanzadaGraficacin con ggplot2

  • qplot

    usar condicionamientos para dividir subconjuntos de nuestros datos y modificar algunos aspectos de la apariencia de nuestros grficos.

    Programacin avanzadaGraficacin con ggplot2

  • qplot

    usar condicionamientos para dividir subconjuntos de nuestros datos y modificar algunos aspectos de la apariencia de nuestros grficos.

    Programacin avanzadaGraficacin con ggplot2

  • diamonds

    Usaremos el conjunto de datos diamonds, este consiste en los precios e informacin de la calidad de aproximadamente 54 mil diamantes y se incluye en el paquete ggplot2.

    Programacin avanzadaGraficacin 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.

    Programacin avanzadaGraficacin con ggplot2

  • Programacin avanzadaGraficacin con ggplot2

    qplot( )

    Ahora podemos crear algunas grficas. 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 dchico son un dataframe.

  • qplot( )

    ahora podemos cambiar un poco esto utilizando el dataframe dchico utilizando ese nombre de dataset como argumento:

    Programacin avanzadaGraficacin con ggplot2

  • qplot( )

    Podemos observar que hay cierta correlacin y algunas estras, la relacin parece exponencial, por lo que llevaremos a cabo una transformacin a las variables:

    Programacin avanzadaGraficacin con ggplot2

  • qplot( )

    Se puede observar tambin que hay sobre graficacin de puntos, por lo que no podemos llevar a cabo conclusiones tan pronto.

    Programacin avanzadaGraficacin con ggplot2

  • qplot( )

    Los argumentos tambin pueden ser combinaciones de variables ya existentes

    Programacin avanzadaGraficacin con ggplot2

  • Atributos estticos: color

    Con qplot podemos mapear algn atributo esttico a algn valor categrico, por ejemplo, en la siguiente grfica, podemos agregar informacin sobre nuestros datos, por ejemplo, podemos agregar el color del diamante.

    Programacin avanzadaGraficacin con ggplot2

  • Atributos estticos: shape

    O tambin el tipo de corte traficando un punto diferente de acuerdo al tipo de corte que estemos graficando.

    Programacin avanzadaGraficacin con ggplot2

  • Atributos estticos: 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:

    Programacin avanzadaGraficacin con ggplot2

  • Atributos estticos: alpha

    El valor de I(1/100) nos indica cuanto de un punto graficado se pintar, es decir, en el caso de 1/100 necesitaramos 100 puntos en el mismo lugar para poder pintar un solo punto completamente opaco

    Programacin avanzadaGraficacin con ggplot2

  • Atributos estticos: shape

    El tamao (size) tambin es un atributo que podemos manera a alguna variable, por ejemplo, en este caso a una variable llamada table que es una transformacin de las variables x, y z.

    Programacin avanzadaGraficacin con ggplot2

  • Consideraciones estticas

    Diferentes tipos de atributos estticos trabajan mejor con diferentes tipos de variables, por ejemplo, color y shape funcionan bien con variables categricas

    Programacin avanzadaGraficacin con ggplot2

  • Consideraciones estticas

    mientras que tamao trabaja mejor con variables continuas,

    La cantidad de datos tambin puede hacer una diferencia, si hay muchos datos puede ser difcil distinguir entre diferentes grupos, por lo que usamos faceting

    Programacin avanzadaGraficacin con ggplot2

  • Atributos estticos: faceting

    Este atributo permite que creemos tablas dividiendo los datos en grupos y desplegando la misma grfica para cada grupo de tal manera que permite la comparacin visual inmediata.

    Programacin avanzadaGraficacin con ggplot2

  • geoms

    No solo podemos hacer grficas de dispersin x contra y, tambin podemos crear otros tipos de grficos utilizando el parmetro geom, geom viene de geometric object, este describe el tipo de objeto.

    Programacin avanzadaGraficacin con ggplot2

  • geoms

    estos son los que hay:

    geom = point el valor por omisin, ya lo hemos visto.

    geom = smooth ajusta una curva a los datos y despliega la curva y su error estndar.

    Programacin avanzadaGraficacin con ggplot2

  • geoms

    geom = boxplot produce una grfica de caja para sintetizar la distribucin de los datos.

    Programacin avanzadaGraficacin con ggplot2

  • geoms

    geom = boxplot produce una grfica de caja para sintetizar la distribucin de los datos.

    Programacin avanzadaGraficacin con ggplot2

  • geoms

    geom = path y line dibujan lneas entre los puntos, pero lneas 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.

    Programacin avanzadaGraficacin con ggplot2

  • geoms

    tambin podemos hacer grficas en 1D

    geom= histogram crea un histogramageom= freqpoly un polinomio de frecuenciasgeom= density crea una grfica de densidad.

    Programacin avanzadaGraficacin con ggplot2

  • Programacin avanzadaSimulacin

    INSTITUTO DE FSICA UNAM 2017

  • Programacin avanzadaSimulacin

    Introduccin

    R provee una gran cantidad de funciones matemticas y estadsticas, de lgebra lineal y de operaciones con conjuntos,

  • Programacin avanzadaSimulacin

    Introduccin

    en esta leccin aprenderemos qu tipo de funciones podemos acceder y adems cmo podemos utilizarlas para llevar a cabo simulaciones.

    Programacin avanzadaSimulacin

  • Funciones matemticas

    Los primeros tipos de funciones que veremos son las matemticas, y son las siguientes:

    exp( ) Funcin exponenciallog( ) Funcin logartmicalog10( ) F. logartmica base 10sqrt( ) Funcin raz cuadradaabs( ) Funcin valor absolutosin( ) cos( ) tan( ) F. trigonomtricasmin( ) max( ) F. mximo y mnimo

    Programacin avanzadaSimulacin

  • Funciones matemticas

    Los primeros tipos de funciones que veremos son las matemticas, y son las siguientes:

    which.min( ) y which.max( ) ndice del valor mnimo y mximo

    pmin( ) pmax( ) mnimo y mximo de varios vectores elemento a elemento.

    sum( ) prod( ) Suma y productos de un vector.

    cumsum() cumprod( ) Suma y producto acumulativo de elementos de vector.

    Programacin avanzadaSimulacin

  • Funciones matemticas

    Los primeros tipos de funciones que veremos son las matemticas, y son las siguientes:

    round( ) Redondea entero ms cercano.floor( ) Redondeo al entero abajoceiling( ) Redondeo al entero arribafactorial( ) Funcin factorial

    Programacin avanzadaSimulacin

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

    Programacin avanzadaSimulacin

  • Funciones para lgebra lineal

    Una funcin muy til es la funcin crossprod( ) que nos encuentra el producto punto de dos vectores con la misma dimensin.

    Programacin avanzadaSimulacin

  • Funciones para lgebra lineal

    Para la multiplicacin de matrices, utilizamos el operador %*%

    Programacin avanzadaSimulacin

  • Funciones para lgebra lineal

    La funcin solve, resuelve sistemas de ecuaciones lineales, e incluso encontrar matrices inversas, por ejemplo, supongamos que tenemos el siguiente sistema lineal:

    Programacin avanzadaSimulacin

  • Funciones para lgebra lineal

    Este se puede resolver de forma matricial de la siguiente manera:

    Programacin avanzadaSimulacin

  • Funciones para lgebra lineal

    En R lo haramos as:

    La segunda llamada a solve nos muestra que slo queremos la inversa de x.

    Programacin avanzadaSimulacin

  • Funciones para lgebra lineal lineal

    Y podemos comprobarlo de la siguiente manera:

    Programacin avanzadaSimulacin

  • Funciones para lgebra lineal

    Tambin tenemos otras funciones que pueden ser muy tiles para la interaccin con matrices.

    t( ) matriz transpuesta qr( ) descomposicin QR chol( ) descomposicin

    de Cholesky det( ) determinante eigen( ) eigenvalores,

    eigenvectores diag( ) Extrae la diagonal

    de una matriz cuadrada. sweep( ) Operaciones de

    barrido en anlisis numrico.

    Programacin avanzadaSimulacin

  • Funciones para lgebra lineal

    Tambin tenemos otras funciones que pueden ser muy tiles para la interaccin con matrices.

    Programacin avanzadaSimulacin

  • Funciones para lgebra lineal

    Tambin tenemos otras funciones que pueden ser muy tiles para la interaccin con matrices.

    Programacin avanzadaSimulacin

  • Funciones utilitarias

    sort( )

    Esta funcin se encarga de regresarnos el vector de entrada pero de forma ordenada, ya sea de forma creciente o decreciente.

    Programacin avanzadaSimulacin

  • choose(n, k )

    Esta funcin encuentra el nmero de posibles subconjuntos de tamao k escogidos de un conjunto de tamao n.

    Programacin avanzadaSimulacin

  • Operaciones de conjuntos

    Podemos llevar a cabo operaciones de conjuntos:

    union(x, y) - Unin intersect(x, y) -

    Interseccin setdiff(x, y) - Diferencia setequal(x, y) -

    Igualdad c %in% x Pertenencia

    de c en x choose(n, k)

    Subconjuntos posibles

    Programacin avanzadaSimulacin

  • Operaciones de conjuntos

    Por ejemplo:

    Programacin avanzadaSimulacin

  • Operaciones de conjuntos

    Por ejemplo:

    Programacin avanzadaSimulacin

  • Funciones de distribuciones estadsticas

    R tiene prcticamente toda funcin de distribucin estadsticas, principalmente las ms conocidas.

    Programacin avanzadaSimulacin

  • Funciones de distribuciones estadsticas

    En general se nombran con un prefijo y el nombre de la distribucin:

    r para la generacin de nmeros aleatorios

    p para la funcin acumulativa.

    d para la funcin de densidad o de probabilidad de masa.

    q para cuantiles.

    Programacin avanzadaSimulacin

  • Funciones de distribuciones estadsticas

    Hay una gran cantidad de ellas las ms comunes:

    dbeta dbinom dcauchy dchisq dexp df dgamma dgeom dhyper dlnorm dmultinom dnbinom dnorm dpois dt dunif dweibull

    Programacin avanzadaSimulacin

  • Funciones de distribuciones estadsticas

    Un ejemplo:

    Programacin avanzadaSimulacin

  • Programacin avanzadaSimulacin

  • Simulacin

    Todas estas funciones nos pueden servir para llevar a cabo simulaciones de diferentes problemas que nos pudiramos plantear.

    Programacin avanzadaSimulacin

  • Programacin avanzadaShiny

    INSTITUTO DE FSICA UNAM 2017

  • Shiny

    Shiny es un marco de desarrollo web para R, esto nos permite convertir nuestros anlisis o grficas en aplicaciones interactivas en el web.

    La gran ventaja es que no necesitamos saber (demasiado) de HTML, CSS, JavaScript.

    Programacin avanzadaShiny

  • Instalacin

    install.packages(shiny, dependencies = TRUE)

    Programacin avanzadaShiny

  • Programacin avanzadaShiny

    library(shiny)

    ui

  • library(shiny)

    ui

  • Programacin avanzadaShiny

    Inputs

  • Programacin avanzadaShiny

    Ouputs

  • library(shiny)

    ui

  • library(shiny)

    sliderInput(inputId = num, label = Escoge un nmero, value = 25, min = 1, max = 100)

    Programacin avanzadaShiny

    Probemos el siguiente cdigo:

  • library(shiny)

    ui

  • sliderInput(inputId = num, label = Escoge un nmero, value = 25, min = 1, max = 100)

    Programacin avanzadaShiny

    La sintaxis es importante:

  • Programacin avanzadaShiny

    Podemos usar otras funciones para el input:

  • library(shiny)

    ui

  • library(shiny)

    ui

  • Programacin avanzadaShiny

    Dependiendo del valor que escojamos, ser el valor que tomar el input.

  • Programacin avanzadaShiny

    Podemos usar otras cosas para el output:

  • BibliografaLibros que son muy tiles

    INSTITUTO DE FSICA UNAM 2017

  • Introduccin a la Programacin Estadstica con RBibliografa, Libros, referencias y notas tiles

    Buenas noticias!!!

  • Introduccin a la Programacin Estadstica con RBibliografa, Libros, referencias y notas tiles

  • Introduccin a la Programacin Estadstica con RBibliografa, Libros, referencias y notas tiles

  • Introduccin a la Programacin Estadstica con RBibliografa, Libros, referencias y notas tiles

  • Muchas gracias :-)[email protected]

    Programacin avanzadaShiny

    mailto:[email protected]

  • Business inquires? [email protected]

    Programacin avanzadaShiny

    mailto:[email protected]