+ - 0:00:00
Notes for current slide
Notes for next slide

APIs con R

Pachá

LatinR - Sep 26th, 2019

1 / 16

DigitalOcean

  • Digitalocean.com
  • Voy a mostrar ejemplos usando una máquina virtual escalable
  • Es útil si necesito el output de un modelo que no puedo correr en mi notebook
  • Si no tienes cuenta puedes acceder con m.do.co/c/6119f0430dad y tendrás 100 USD de crédito
  • Usa la imagen que subí y que ya trae RStudio Server marketplace.digitalocean.com/apps/rstudio
2 / 16

Plumber

  • Genera una API REST
  • Similar a escribir paquetes de R
  • Usa los conceptos de get, post y put
3 / 16

¿Por qué usar Plumber?

Hardware

  • En la administración pública muchas veces el hardware no nos sirve para ajustar modelos
  • Un notebook, por caro que sea, a veces tampoco es suficiente
4 / 16

¿Por qué usar Plumber?

Técnica

  • Las redes neuronales se pueden ejecutar por partes
  • Las regresiones necesitan capacidad computacional para la matriz de diseño que no se lee por partes
  • A veces ayuda usar matrices dispersas en lugar de matrices densas
  • No es un problema de R, Python, Stata, etc, tiene que ver con como el computador almacena números
5 / 16

¿Por qué usar Plumber?

Interpretabilidad

  • Las herramientas de regresión entregan una salida interpretable
  • Para el diseño de políticas públicas no podemos confiar en cajas negras
  • La única salvedad serían los modelos de series de tiempo
  • Cualquier otro modelo que combina variables debe ser explicable
6 / 16

¿Por qué usar Plumber?

Evaluación

  • Las políticas públicas tienen impacto
  • Ese impacto se puede medir usando econometría
  • Mirada económica/ética:
    • ¿Existe un programa mejor que pueda implementar?
    • ¿Puedo mejorar a un grupo sin empeorar a los demás?
7 / 16

Modelo lineal, parte 1

Modelo lineal usando datos de datos:

pacman::p_load_gh("cienciadedatos/datos")
modelo <- lm(precio ~ quilate, data = diamantes)
coef(modelo)
## (Intercept) quilate
## -2256.361 7756.426
8 / 16

Modelo lineal, parte 2

Usando plumber

#* modelo
#* @param x variable independiente
#* @param y variable dependiente
#* @get /modelo
function(x, y) {
form <- as.formula(paste(y, x, sep = "~"))
summary(lm(form, data = diamantes))
}
9 / 16

Modelo lineal, parte 3

Para ejecutar:

r <- plumb("plumber.R")
r$run(port=8000)
10 / 16

Modelo lineal, parte 4

La prueba debe dar error, plumber por default devuelve un data.frame convertido a JSON.

Cambios necesarios:

#* modelo
#* @param x variable independiente
#* @param y variable dependiente
#* @get /modelo
function(x, y) {
form <- as.formula(paste(y, x, sep = "~"))
broom::tidy(lm(form, data = diamantes))
}
11 / 16

Modelo lineal, parte 5

Más opciones:

#* modelo2
#* @param x variable independiente
#* @param y variable dependiente
#* @param m modelo
#* @get /modelo2
function(x, y, m) {
form <- switch(m,
"lin" = as.formula(paste(y, x, sep = "~")),
"log" = as.formula(sprintf("I(log(%s)) ~ I(log(%s))", y ,x))
)
broom::tidy(lm(form, data = diamantes))
}
12 / 16

Advertencias

  • Plumber jamás debería usarse sin https cuando hay datos sensibles en uso
  • Sin una configuración https debería reservarse a la intranet
  • Por ejemplo, si no hago un control mínimo como x <- substr(x, 1, 5) un usuario podría pasar SELECT * FROM public.clientes u otro comando para obtener más datos de lo que quiero que vea
13 / 16

Extensiones

  • Se puede levantar el servicio con docker, pm2 o systemd
  • Se puede integrar con Shiny
14 / 16

Contacto

Twitter y Github: pachamaltese

Email: pacha arroba dcc punto uchile punto cl

15 / 16

This work is licensed as

Creative Commons Attribution-NonCommercial 4.0 International

To view a copy of this license visit https://creativecommons.org/licenses/by-nc/4.0/

16 / 16

DigitalOcean

  • Digitalocean.com
  • Voy a mostrar ejemplos usando una máquina virtual escalable
  • Es útil si necesito el output de un modelo que no puedo correr en mi notebook
  • Si no tienes cuenta puedes acceder con m.do.co/c/6119f0430dad y tendrás 100 USD de crédito
  • Usa la imagen que subí y que ya trae RStudio Server marketplace.digitalocean.com/apps/rstudio
2 / 16
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow