class: inverse, center, middle <br> #### Programación y manejo de datos con R (slides 01) ## Introducción (Tema 1) <br> ### Pedro J. Pérez <br><br> #### e-mail: [pedro.j.perez@uv.es](mailto:pedro.j.perez@uv.es) --- class: inverse, center, middle ### 1. Para analizar datos, ¿realmente necesito aprender R? <html><div style='float:left'></div><hr color='#EB811B' size=1px width=996px></html> <br> -- #### Bueno ... estamos en la era del Big Data y para hacer "Ciencia de Datos" es necesario programar. #### Además, R es, junto con Phyton, el principal lenguaje para hacer DS. --- ##### Era del Big Data - Estamos inmersos en una época de cambio tecnológico acelerado, conocida como la **era del Big Data**. - Una parte importante de esos avances están relacionados con la **abundancia de datos**. - Los datos masivos han posibilitado grandes avances en un campo de investigación como es el **Machine Learning/Deep Learning** ... y finalmente los LLM's -- <br> ##### Datos másivos (Big data) - "The world’s **most valuable resource** is no longer oil, but **data**" (The Economist, 2017). - Necesidad de convertir datos en información que aporte valor a las corporaciones. - Ha llevado a la aparición de un nuevo campo de conocimiento que está irrumpiendo con fuerza en muchos planes de estudio: la **Ciencia de Datos** --- ##### IA, ML y DL - Los datos masivos han posibilitado grandes avances en un campo de investigación como es el **Machine Learning/Deep Learning**. - La idea fundamental en que se basa la **Inteligencia Artificial** es conseguir que una computadora resuelva un problema complejo como lo haría un humano - 3 etapas: inicios, sistemas expertos y ML/DL -- - En ML/DL no hay que codificar las reglas, sino que se provee a un algoritmo con suficientes datos y este **encuentra las reglas por si mismo**; es decir, en cierto sentido "aprende". - Este enfoque ha posibilitado que muchas tareas "humanas" se hayan **automatizado**. - Un sistema/programa de ML es entrenado más que explícitamente programado. -- - **Deep Learning** es un subconjunto del ML. Utiliza técnicas/algoritmos más complejas en términos computacionales y, por lo tanto, necesitan para aprender un mayor volumen de datos, pero su filosofía es la misma: proveer datos para que el ordenador aprenda a resolver y automatizar una tarea concreta. --- ##### ¿Qué es la Ciencia de Datos? - Disciplina cuyo objetivo es **obtener información/conocimiento** de los datos que genere valor. - Más simple: "usar datos para contestar preguntas" (!!) - Pero ... ¿ese no es también el objetivo de la estadística? --- ##### para nosotros la DS será ... - Todo el proceso, todo lo que ocurre, desde que se importan unos datos hasta que se presentan los resultados. <img src="data:image/png;base64,#../imagenes/ss_02_img_02_DSa.png" width="85%" style="display: block; margin: auto;" /> --- ##### DS es un buen trabajo? - "The **data scientist** is the **sexiest job** of the century" : [Harvard Business Review (2012)](https://hbr.org/2012/10/data-scientist-the-sexiest-job-of-the-21st-century). - Según [este artículo de HBR](https://hbr.org/2022/07/is-data-scientist-still-the-sexiest-job-of-the-21st-century), parece que **en 2022** todavía sigue siendo un empleo muy demandado. <br> ##### para ser "científico de datos", ¿qué necesito saber? - Para un data scientist son muy importantes las hackings skills (programación) <img src="data:image/png;base64,#../imagenes/ss_02_img_03_DS-venn.png" width="33%" style="display: block; margin: auto;" /> --- ##### ¿Que sotfware usar? ¿Point & click programs o lenguajes de programación? -- .pull-left[ - **Con menús**: facilidad de uso; sin embargo, ... <img src="data:image/png;base64,#../imagenes/error_Excel_01.png" width="90%" style="display: block; margin: auto;" /> <br> - By the way, 🇷 [tiene muchas GUI's](https://r4stats.com/2022/02/09/r-graphical-user-interface-comparison/): programas con menús similares a SPSS. ] -- .pull-right[ - **Con código**: 🇷eproducibilidad y flexibilidad, y ..., pero ... <img src="data:image/png;base64,#../imagenes/ss_00_teseract.png" width="65%" style="display: block; margin: auto;" /> <img src="data:image/png;base64,#../imagenes/ss_00_medellin.png" width="65%" style="display: block; margin: auto;" /> ] --- .pull-left[ ##### Una pequeña broma. Broma pero ... <br> <img src="data:image/png;base64,#../imagenes/ss_02_img_06_R-como-cars.jpeg" width="100%" style="display: block; margin: auto;" /> ] -- .pull-right[ ##### Programar cuesta (al principio), pero permite hacer muchas cosas nuevas - Por ejemplo, [estos trabajos](https://perezp44.github.io/intro-ds-21-22-web/07-trabajos.html) se elaboraron como trabajos de una asignatura optativa del grado de Economía. - Tenéis que visitar estas 2 páginas: - [R weekly](https://rweekly.org/) - [R-bloggers](https://www.r-bloggers.com/) - Más recursos: - [CRAN package by task](https://cran.r-project.org/web/views/) y [II](https://github.com/cran-task-views/ctv) - ["Top-40" new CRAN R packages](https://rviews.rstudio.com/2021/03/19/february-2021-top-40-new-cran-packages/) - [Awesome list of R resources](https://github.com/iamericfletcher/awesome-r-learning-resources) - [Otra Awesome R list](https://github.com/qinwf/awesome-R) - [Big Book of R](https://www.bigbookofr.com/) ] --- .pull-left[ ##### OK, medio convencido, pero ... ¿de verdad que tengo que aprender a programar? - **SÍ**. Todo lo que puedas. - Una de las competencias importantes en DS es saber programar, pero … **requiere tiempo**; y .orange2[al principio] te sientes **inútil** <br> <img src="data:image/png;base64,#../imagenes/ss_02_img_05_salt.png" width="95%" style="display: block; margin: auto;" /> <br> ] -- .pull-right[ ##### OK, medio convencido. Aunque ... <div class="figure" style="text-align: center"> <img src="data:image/png;base64,#../imagenes/ss_00_R--excel.png" alt="From https://twitter.com/kareem_carr/status/1371836385133531155" width="100%" /> <p class="caption">From https://twitter.com/kareem_carr/status/1371836385133531155</p> </div> ] --- class: inverse, center, middle ### 2. OK, convencido, pero ... ¿por qué R? <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> <br> #### Sacrílego!!!! 🧙🧙 🔥🔥 #### [Por muchas cosas!!!](https://mobile.twitter.com/tanya_shapiro/status/1516212841761681415) Lo mejor de 🇷 [su comunidad](https://twitter.com/WillBall12/status/1495068050118389768)!! --- ##### ¿por qué R? - **R is the data language**: en Ciencia de datos it’s THE language to beat. - Sólo tiene un rival serio: **Phyton**. Si no me crees puedes leer sobre ello [aquí](http://nadaesgratis.es/fernandez-villaverde/r), [aquí](https://www.r-bloggers.com/why-r-is-the-best-data-science-language-to-learn-today/), o [aquí](https://shirinsplayground.netlify.com/2017/09/ode_to_r/) - Entre las **compañías que usan R** están: Google, Facebook, Twitter, Microsoft, IBM, Uber, Ford, Airbnb, American Express, Barclays Bank, Bank of America ... Puedes encontrar un listado más completo [aquí](https://www.listendata.com/2016/12/companies-using-r.html) - Evidentemente, no a todo el mundo le gusta R; por ejemplo [aquí](http://arrgh.tim-smith.us/) o el clásico [R-inferno](http://www.burns-stat.com/documents/books/the-r-inferno/) -- <br> ##### Pero ... ¿y Phyton? - Hay muchas opiniones sobre el debate **R vs Phyton**, por ejemplo: [esta](http://mchow.com/posts/data-science-cbk/), [esta](https://twitter.com/bhanukjhingan/status/1395410754929520644), [esta](https://www.youtube.com/watch?v=wWABGUGv-Bg&feature=youtu.be) o [esta](https://www.youtube.com/watch?v=JAEs5IAhAYY). - Phyton es un lenguaje de programación más general, **R is more domain specific**. Puedes consultar algunas **clasificaciones** [aquí](https://blog.revolutionanalytics.com/2018/06/pypl-programming-language-trends.html) --- .pull-left[ ##### by the way ... parece que seguimos creciendo!! <img src="data:image/png;base64,#../imagenes/ss_00_descargas_R.png" width="72%" style="display: block; margin: auto;" /> ] -- .pull-right[ ##### además, yo me fio de Elmo!!! <img src="data:image/png;base64,#../imagenes/ss_00_Elmo.png" width="75%" style="display: block; margin: auto;" /> ] --- class: inverse, center, middle ### 3.Primeras ideas , ¿qué es esto de R? <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> <br> #### Conviene saber algunas cosas sobre el universo 🇷 #### (R, RStudio, paquetes, tidyverse, Rmarkdown, Rprojects ... Quarto) --- background-image: url(imagenes/ss_00_RR_icono.jpeg) background-position: 99% 1% background-size: 6% ##### ¿qué es R? - Es un **entorno** para hacer **análisis estadísticos**; de hecho, la página oficial de R se llama [The R Project for Statistical Computing](https://www.r-project.org/) - También es un **lenguaje de programación** - R se distribuye bajo la licencia GNU GPL; o sea, es **software libre** <br> ##### ¿cuando fue creado? - En 1993, por **R. Ihaka** y **R. Gentleman** de la Universidad de Auckland - En 1997 el desarrollo de R se traspasó a un grupo de programadores conocidos como **"The R-core team"** ... - ... pero actualmente, el entorno R es el resultado de la colaboración de la **comunidad de usuarios de R** --- background-image: url(imagenes/ss_00_RStudio.png) background-position: 99% 1% background-size: 6% ##### ¿qué es RStudio? - Técnicamente es un **IDE** (Integrated development environment) diseñado especialmente para R - Intuitivamente es un **programa que nos facilita dar nuestras ordenes a R**. - RStudio fue [creado en 2011](https://www.rstudio.com/blog/rstudio-new-open-source-ide-for-r/) -- ##### Diferencias entre R y RStudio - Es importante entender la diferencia entre R y RStudio: R es un entorno/programa para hacer análisis estadísticos y también es un lenguaje de programación; mientras que RStudio es un programa que sirve para poder usar R de manera más cómoda y eficiente. --- class: inverse, center, middle ### 4. Historia reciente de R <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> <br> ### R-base vs. tidyverse --- ##### a kind of revolution in 🇷: Hadley y el tidyverse - R **era** un lenguaje "oscuro" para estadísticos y académicos, pero ... - ... recientemente ha habido una especie de **revolución** en el universo 🇷 -- .pull-left[ - [Hadley Wickham](http://hadley.nz/), científico jefe de RStudio, [revolucionó el universo](https://priceonomics.com/hadley-wickham-the-man-who-revolutionized-r/?utm_campaign=Data%2BElixir&utm_medium=email&utm_source=Data_Elixir_46) 🇷, creando el '*Hadleyverse*' <img src="data:image/png;base64,#../imagenes/ss_02_img_07_Hadley.jpg" width="76%" style="display: block; margin: auto;" /> ] -- .pull-right[ - El '*Hadleyverse*', se ha convertido en el [tidyverse](https://www.tidyverse.org/) gracias a un grupo de desarrolladores, por ejemplo: <img src="data:image/png;base64,#../imagenes/ss_02_img_08_gente-tidyverse.jpg" width="95%" style="display: block; margin: auto;" /> ] --- background-image: url(imagenes/ss_05_img_03_tidyverse-hex.png) background-position: 99% 1% background-size: 6% ##### ¿qué es el tidyverse? - Una nueva forma de escribir código y afrontar el análisis de datos con R. - Según su propia página web, el [tidyverse](https://www.tidyverse.org/) es: <img src="data:image/png;base64,#../imagenes/ss_05_img_05_pkgs-tidyverse.png" width="65%" style="display: block; margin: auto;" /> - **Traducido**, es un grupo de paquetes que se han diseñado con los mismos principios y que, por tanto, trabajan bien juntos y que han cambiado mucho, y a mejor, la forma de programar y afrontar el análisis de datos con R. - Ahora mismo, el **tidyverse** [ya es el estándar](https://twitter.com/R_Hisp/status/1399635575712399360) --- background-image: url(imagenes/ss_05_img_03_tidyverse-hex.png) background-position: 99% 1% background-size: 6% ##### R-base vs. tidyverse - Podemos pensar que hay 2 formas de escribir código en 🇷: R-base y tidyverse. - Nosotros escribiremos, principalmente, **à la tidyverse**. - Escribir *à la tidyverse* [tiene ventajas](https://twitter.com/andrewheiss/status/1359583543509348356?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1359583543509348356%7Ctwgr%5E%7Ctwcon%5Es1_&ref_url=file%3A%2F%2F%2Fhome%2Fpjpv%2FEscritorio%2Fslides_curso-R_2021_ok%2Fslides_01_intro_a.html1) y, además, es que [ya es el estándar](https://twitter.com/R_Hisp/status/1399635575712399360) <br> -- ##### tiene ventajas, p. ej ... la claridad y facilidad a la hora de leer el código. -- - **R-base way**: ``` r leave_house(get_dressed(get_out_of_bed(wake_up(me, time = "8:00"), side = "correct"), pants = TRUE, shirt = TRUE), car = TRUE, bike = FALSE) ``` -- - **à la tidyverse** (el operador %>% se llama "the pipe"): ``` r me %>% wake_up(time = "8:00") %>% get_out_of_bed(side = "correct") %>% get_dressed(pants = TRUE, shirt = TRUE) %>% leave_house(car = TRUE, bike = FALSE) ``` --- class: inverse, center, middle ### 5. Investigación reproducible y Rmarkdown <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> <br> #### En mi opinión R está(ba) varios pasos por delante en cuanto a investigación reproducible --- background-image: url(imagenes/ss_00_new_logo_rmd.png) background-position: 99% 1% background-size: 5% ##### Tidyverse workflow e investigación reproducible <img src="data:image/png;base64,#../imagenes/tt_06_img_01_explore-visualice.png" width="60%" style="display: block; margin: auto;" /> -- - Realizaremos **todas las etapas con R**, sin cambiar de programa; y además, como queremos que nuestros análisis sean **reproducibles** usaremos ... <br> -- ##### usaremos ... - [Rprojects](https://support.rstudio.com/hc/en-us/articles/200526207-Using-Projects) - [Rmarkdown](https://rmarkdown.rstudio.com/) o [Quarto](https://quarto.org/) para hacer informes o documentos reproducibles. --- class:: inverse2 <br><br><br> ### Antes de abrir RStudio: sé que todos somos mayores y que casí sois Graduados pero aún así ... un consejo <br> <html><div style='float:left'></div><hr color='#EB811B' size=1px width=996px></html> <br><br> ##### En serio!! Completamente en serio!! --- class: center ### 1. Es muy-muy importante la actitud!!! -- .pull-left[ ##### Hay que intentar no agobiarse ... <img src="data:image/png;base64,#../imagenes/ss_03_img_01_angry-computer.jpg" width="95%" style="display: block; margin: auto;" /> <br> .small[**Errores tontos**, we will have [a few](https://twitter.com/cogscimom/status/1354508785365078016/photo/1), well ... [a lot](https://twitter.com/WeAreRLadies/status/1523777331386458178). Es un poco frustante, pero [completamente normal](https://twitter.com/allison_horst/status/1213275783675822080?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1213275783675822080%7Ctwgr%5E%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fperezp44.github.io%2Fintro-ds-21-22-web%2Ftutoriales%2Ftt_02_primeros-pasos-con-R.html) !!!!!!] ] -- .pull-right[ #### ... mejor dejarse llevar <img src="data:image/png;base64,#../imagenes/ss_03_img_02_baby-surf.jpg" width="95%" style="display: block; margin: auto;" /> ] -- .pull-right[ <img src="data:image/png;base64,#../imagenes/ss_01_jessy_montipak.png" width="81%" style="display: block; margin: auto auto auto 0;" /> <img src="data:image/png;base64,#../imagenes/ss_01_googling_2.png" width="79%" style="display: block; margin: auto auto auto 0;" /> ] --- background-image: url(data:image/png;base64,#../imagenes/ss_03_img_02_baby-surf.jpg) background-size: cover ### Vengaaaa, vamos allá!!!! -- <img src="data:image/png;base64,#../imagenes/ss_00_tu_puedes.png" width="20%" style="display: block; margin: auto auto auto 0;" />