Translate

miércoles, 2 de marzo de 2016

Jugando con Tableau y los datos del banco Mundial

He estado jugando con Tableau y echándole un ojo a los datos de Banco Mundial.Total, que me he acordado del marido de una amiga que conocí en Leeds que es de Pakistan. Bueno, de él no, es que durante una cena nos contó que Pakistan era uno de los países más poblados del Mundo. Fijate tú, que en España, o al menos por las zonas que yo he vivido nunca había oído hablar de este país. Qué  si, que intuía que estaba por dónde todos los países que terminan en nosequéTAN y cerca del país de Borat. Y dicho sea de paso a mi me sirvió este conocimiento  para ganar un quesito en el trivial...

Total, que una cosa llevó a la otra y me he puesto a juguetear con los datos. Estaba interesada principalmente en los países más poblados,pero como la cabra siempre tira al monte he acabado creando un dashboard con datos de acceso a Internet y de mortalidad infantil.

La verdad es que ha quedado muy bonito y muy fácil de revisar el treemap más el mapa y el diagrama de cajas y bigotes que es cómo lo llamaba una profe mía en la Universidad (boxplot para los amigos), Yo siempre me imaginaba una caja llena de bigotes de los de Movember y eso que se puede decir que es mi gráfico favoito,.. En fin, mejor me acuesto





Lo he puesto para que filtre por el treemap y eso, muy chulo y útil.Desde luego Tableau nos das los gráficos mascaicos y sólo hay que ocuparse de encontrarle sentido a los datos Otra cosa son las métrica que he cogido...jeje Estaba pensando en intentar hacer una correlación de número de hijos y países más poblados. ¿Eso tiene que ser significativo no? ¿Y mortalidad infantil con estas dos? Pues eso, que más para otro día. Pero si andas interesado en saber como crear un Dashboard con Tableau este video lo explica rápidico rapidico.


miércoles, 3 de febrero de 2016

Segmentando con el modelo RFM con SQL : Recency, Frequency & Monetary value

Si contamos con una base de datos de clientes podemos aplicar un modelo bastante fácil y que ya lleva bastante rodaje en el Marketing Directo:el modelo RFM.

¿Qué es RFM?

El fin de este modelo es poder segmentar a nuestros clientes para saber cuales son los que mayor beneficio nos puede aportar. Así a esos clientes podemos mandarles códigos promocionales, por poner un ejemplo.

Descuartizando el modelo RFM

¿Qué significan cada una de esas letras?
  • Recency: que podríamos describir como recencia.
  • ¿Hace cuánto que compró el cliente? Si el cliente hace mucho que no ha comprado puede ser que se haya ido a la competencia.
  • Frecuency: Frecuencia
  • ¿Con qué frecuencia suele comprar?
  • Monetary Value: valor monetario
Cantidad de dinero que ha gastado de media. Si un cliente suele gastar más será más valioso que otro que suele hacer una compra pequeña.

Cómo definimos RFM en una sentencia de SQL

  • La recencia ("recency") viene definida por el día de la última compra: MIN(dias_desde_la_ultima_compra).
  • La frecuencia ("frequency") viene definida por el total de veces que el cliente ha comprado.
  • El valor monetario ("monetary value"), en este caso, lo vamos a definir como la media de la cantidad comprada de cada uno de los clientes.
Imaginando un CRM con un id por cliente podríamos definir la query como: SELECT cliente_id,
MIN(dias_desde_ultima_compra) AS 'recencia',
COUNT(*) AS 'frecuencia',
AVG(cantidad_comprada) AS 'valor monetario'
FROM data GROUP BY 1")
Al ser en SQL la podríamos usar tanto R como en Python, o cualquier otro lenguaje de programación.

domingo, 24 de enero de 2016

Shiny: Crear mini aplicaciones con R -Studio

Mirando ofertas de trabajo he visto que pedían para un par de ellas saber usar Shiny. Así que tras una búsqueda en Internet me he puesto manos a la obra para ver de que se trataba.Y me he llevado una grata sorpresa.

RStudio sigue pensando en como hacer la vida más fácil a los no programadores y ahora nos permite crear aplicaciones al más puro estilo servlet de java con, con su interfaz gráfica para poder jugar con ella sin tener que programar. De esta forma cualquier programa que hagamos en R lo podemos subir a Internet y hacer que un usuario pueda jugar con él. Este post explica muy bien de que va en un lenguaje muy llano y en castellano.

Así como un poco de magía.

via GIPHY

Disclaimer: Este artículo fue escrito en 2016! He actualizado (Abril 2020) el post con información ya que había links rotos. Espero que sirva de ayuda.

Cómo se ve un programa en Shiny


Para poder ponernos con Shiny, lo primero que tenemos que hacer es instalarlo, aunque si tenemos una de las últimas versiones de Rstudio ya nos vendrá integrado.

Instalar shiny en R

Para los anticuados:
> install.packages("shiny")


 Para los más modernos
Directamente pasamos a Rstudio
 

Cómo funciona un programa en Shiny

Cualquier proyecto shiny lo vamos a ver como un directorio formado por varios archivos.Debido a que el programa va a correr en un servidor (aunque sea en localhost)  y que tiene interfaz gráfica vamos a necesitar al menos un script para el servidor y otro script para nuestro GUI.

Archivo ui.R

Este archivo va a tener todo lo que necesitamos para la interfaz gráfica.La ventanita, los títulos, etc etc. Para hacer todavía más fácil la creación de la aplicación si decidimos publicarla en una web por defecto Shiny la creadará con el framework Bootstrap que es ampliamente utilizado hoy en día y usa HTML5. ¿Qué más se puede pedir?

Código ui.R

 This is the user-interface definition of a Shiny web application.
# You can find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com
#

library(shiny)

shinyUI(fluidPage(

  # Application title
  titlePanel("Old Faithful Geyser Data"),

  # Sidebar with a slider input for number of bins
  sidebarLayout(
    sidebarPanel(
      sliderInput("bins",
                  "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)
    ),

    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("distPlot")
    )
  )
))

Archivo server.R 


Este archivo es el del servidor.

Código server.R


# This is the server logic for a Shiny web application.
# You can find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com
#

library(shiny)

shinyServer(function(input, output) {

  output$distPlot <- renderPlot({

    # generate bins based on input$bins from ui.R
    x    <- faithful[, 2]
    bins <- seq(min(x), max(x), length.out = input$bins + 1)

    # draw the histogram with the specified number of bins
    hist(x, breaks = bins, col = 'darkgray', border = 'white')

  })

})

Crear un proyecto en Shiny



Esto va a hacer que tengamos un directorio con estos dos archivos en RStudio tal que así en nuestro nuevo directorio/proyecto


Una vez creado el nuevo proyecto podemos ver aplicaciones preinstaladas para empezar a toquetearlas. Para ello sólo hace falta llamarlas desde la línea de comandos y correr la aplicación de esta forma
> library(shiny)
> runApp("my_app")
Shiny nos los pone fácil y nos tiene preparadas algunas aplicaciones preinstaladas. Así que podemos llamarlas y ver lo que es capaz de hacer. Aquí los ejemplos que podemos encontrar:

runExample("01_hello") # a histogram
runExample("02_text") # tables and data frames
runExample("03_reactivity") # a reactive expression
runExample("04_mpg") # global variables
runExample("05_sliders") # slider bars
runExample("06_tabsets") # tabbed panels
runExample("07_widgets") # help text and submit buttons
runExample("08_html") # Shiny app built from HTML
runExample("09_upload") # file upload wizard
runExample("10_download") # file download wizard
runExample("11_timer") # an automated timer
También puedes ver diferentes ejemplos para estudiar y trabajar sobre el código.
En mi caso he re-creado una app que lee archivos en txt y los muestra en una nube de palabras (wordcloud). Quiero que me ayude a entender de una forma fácil y visual cuales son los términos que más se repiten en los artículos de mi web. La app todavía necesita varias vueltas como por ejemplo crear stop-word o cambiar el tipo de codificación de caracteres. Pero bueno, se vería así.

Ejemplos de R con código

La página principal donde encontré los ejemplos ha desaparecido pero aún queda en pie los enlaces a los ejemplos.

Los 108 ejemplos con código puedes encontrarlos en el siguiente fork en github. En mi caso usé código del ejemplo de 002-text y wordcloud ( http://gallery.shinyapps.io/082-word-cloud )

 He puesto el código y el enlace a su página en el siguiente documento para que sea más fácil de encontrar
https://docs.google.com/spreadsheets/d/1dJMZkdVHxk-mjta5eAfavCeQGLjEk6gACEZ_GkLaWAo/edit?usp=sharing

En github puedes encontrar el código de cuando cree el post (gracias Maria del pasado por hacer un fork).

*Yo actualizando los enlaces a este post que escribí en 2016, tras pasarme a Python.


Referencia de la imagen- 9gag.com/

Documentación e información sobre Rstudio Shiny


domingo, 13 de diciembre de 2015

Año nuevo - cursos nuevos

Hola gente anónima que pulula por Internet

He decidido retomar el blog con la idea de automotivarme (ese era el fin de este blog...)  con los nuevos cursos que me he apuntado y aunque en principio iban a ser un par, bueno, creo que me he pasado un poco. El saber no ocupa lugar, pero si mucho tiempo.

Por ello me he tomado mes y medio para ponerme al día en todo lo nuevo relativo al análisis digital antes de seguir con mi carrera profesional con la ideas de equiparme con nuevas herramientas que poder aplicar a mi trabajo.

Objetivo principal:

Aprender nuevas herramientas, buenas prácticas y métodos data-driven que aplicar al Digital Marketing/Business hasta el 15 de Febrero.

Objetivos específicos:

1.Conseguir certificados que sean reconocibles a nivel internacional
2.Aprender metodología (frameworks) para poder aplicar al análisis de datos en Marketing/Ecommerce.
3Realizar análisis estadísticos con lenguajes de programación específicos del análisis de datos.
4.Aprender nuevas formas de poder comunicar los insights que encuentro a personas que no saben sobre datos/estadísticas.


1. Conseguir certificados que sean reconocible a nivel Internacional

Motivación: Uno de los problemas que supongo que como yo tienen las personas que llevan tiempo trabajando en todo lo relacionado con lo digital ,es que ningún plan de estudios de posgrado realmente satisface los intereses y el coste (económico/de tiempo)-beneficio. Muchos de estos programas no cumple las expectativas a nivel de formación- contenido práctico y casos de usos. Ello, unido a que  la información que se da en estos,se va quedando anticuada de un año para otro y que luego en según que empresa trabajan con unos programas u otros hace muy difícil que me decida por ninguno de ellos.


- Conseguir la Google Adwords Individual Certification
Llevo trabajando con Adwords al menos dos años, no debería ser muy dificil
DONE -> https://www.google.com/partners/?q=google%20partners#i_profile;idtf=102341943869267004654;
- Renovar Google Analytics Individual Certification
Me caducó en Agosto, pero no se lo digáis a nadie.

- Conseguir al menos un certificado de Market Motive.
Market Motive es una plataforma de aprendizaje cuyo cofundador es Avisnash Kaushik, uno de los cerebro de la analítica web en el mundo. Junto a otras cabezas pensantes de otras disciplinas ha creado esta plataforma. Sin duda, aprobar alguno de exámenes de sus materias va a tener mérito.


Métricas:
Certificado Adwords: APROBADO (Hurrah!)
Certificado Analytics
Certificado Market Motive


2.Aprender metodología (frameworks) para poder aplicar al análisis de datos cuantitativo en Marketing/Ecommerce.

Para ello estoy inscrita en varios de Marketing Analítico. Los que están en verde son los que cumplen con este fin
CURSOSPRIORIZATIONSTARTINGDEADLINEPLATFORMUNI
Customer Analytics104/01/201615/02/2016CourseraWharton
Using Databases with Python311/01/201622/02/2016CourseraMichigan
Data Visualization and Communication with Tableau211/01/201622/02/2016CourseraDuke
Data Analysis Tools611/01/201615/02/2016CourseraWesleyana
Econometrics425/01/201624/03/2016CourseraRotterdam
Marketing analysis525/01/201625/03/2016CourseraESSES
A/B testing7 17/01/2016UdacityGoogle
Métricas:
Obtener certificado

3. Realizar análisis estadísticos con lenguajes de programación específicos

Esta pregunta está relacionado con lo anterior, pero los cursos que más focalizan en el uso de programas son los que están en naranja.

Hace ya un tiempo que empecé a usar R para algunas tareas muy específicas, pero a la hora de usarlo con todo su potencial aplicado a  tengo siempre que depender de que alguien haya hecho un repositorio. Muchas empresas hacen mucho más fácil utilizar la API por medio de Python. Por otra parte tengo que repasar SQL, que es un lenguaje que estudié en DAI

Luego tenemos SAS y SPSS, ambos software propietario.SAS no se puede utilizar sin licencia. He sido usuaria de SPSS durante toda la carrera y posteriromente analizando encuestas de satisfacción y no tengo problemas en usar los estadísticos mas básicos y la matriz.

Así que como mucho otr@s me pregunto ¿R o Python? Si tú también te lo preguntasAquí una infografía muy apañada
Bueno, parece que en principio los dos, ya que los cursos marcan que lenguajes habría que usar.
Métricas:
Obtener certificados

4.Aprender nuevas formas de poder comunicar los insights que encuentro a personas que no saben sobre datos/estadísticas.

Cuando trabajaba haciendo reporting, una de las preguntas que nos hacíamos a primero de mes, tras ir a contra reloj actualizando los reports era: ¿miran realmente los clientes los datos o solamente se dedican a mirar los rankings en SEO y el dinero gastado? Más tarde yo misma he sufrido por parte de la directiva de la empresa el sentimiento de"¿De verdad nadie ve la tendencia? Sí está ahí en la tabla!"Y me costó ir de tablas muy específicas, a menos específicas; de ahí a gráficos completos; más tarde a gráficos de barras... Bueno, hay que comunicarse con todos los stakeholder así que un curso de tableau, que ya había usado anteriormente, me viene al pelo.
Métricas:
Obtener certificado


Así que una vez todo sumarizado: 
HERE WE GO.

miércoles, 24 de junio de 2015

Preparando el espacio de trabajo en R-Studio

Cosas que dan pereza y que luego agradecemos es tener nuestro espacio de trabajo ordenaico.

Cosas que dan pereza increible es leerse los temas introductorios de como configurar los cacharros y los programicas.

Cosas que da pereza extrema es escribir un post un sábado por la noche sobre R-Studio mientras tus amigos están de fiesta de cumple.

Así que como fin de reclusión me he propuesto terminar con todo lo retraso que tengo y hacer las cosas como dios manda



R version 3.1.3 (2015-03-09) -- "Smooth Sidewalk" Copyright (C) 2015 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R.
 (debería actualizar Rstudio o algo¿no?)
[Workspace loaded from C:/Users/sali/Downloads/EDA_Course_Materials/.RData]
Pues ahí lo tenemos

Si nos ponemos a hacer cosas y nos perdemos podemos poner getwd() y nos dirá igualmente por donde andamos.
> getwd()
[1] "C:/Users/sali/Downloads/EDA_Course_Materials"

El Rdata se refiere

Vale, como verás yo tengo el espacio de trabajo en descargas y eso voy a cambiarlo a un sitio menos coñazo.
Un ataque de originalidad he creado una carpeta que se llama MisDatos,




Copy-Pasteamos y cambiamos los \ por / (en mi caso)
[1] "C:/Users/yo/Downloads/EDA_Course_Materials"
> setwd(C:/Users/sali/MisDatos)
Error: unexpected '/' in "setwd(C:/"
 (Ups las comillas)
> setwd("C:/Users/yo/MisDatos")
> getwd()
[1] "C:/Users/yo/MisDatos"
>
Ahora sí.

Ahora vamos a limpiar el espacio de trabajo que lo tenemos hecho unos zorros
> rm(list=ls())

Listo, ya podemos empezar a trabajar :)

Bueno, vale, tambien te puede preguntar es eso de RData

[Workspace loaded from C:/Users/sali/Downloads/EDA_Course_Materials/.RData]

 Quiz'as queramos guardar los datos que tenemos en nuestro Enviroment cuando por ejemplo abrimos RStudio. Podemos ver los objetos que tenemos cargados en Enviroment



viernes, 27 de marzo de 2015

Un paquete para actualizar R

Ufff tienes R desde hace mil y en un ataque de aburrim originalidad te ha dado por actualizarlo. Prepárate para volver a bajar el software, instalar los paquetes,.. ESPERA ESPERA que hay buenas noticias.

Tachán existe un paquete que te hace todo esto.

Instalar el paquete installr para actualizar R

1. Si usas la GUI debes ir a Paquetes y buscar installr que es el paquete que te instalará

2.Elegimos:  installr
en la lista
3.Ahora a por un poco de código (de copy-paste), para que no sé diga que si los que usan windows...
 library(installr)
 updateR()
4.Vamos, super simple: llamamos a la librería y actualizamos R

Instalando R

5. Nos pregunta que si queremos instalar la versión nueva. Bueno, pues sí, porque eso es lo que queremos.


6. Y se baja y se empieza a instalar...
7. Y una vez terminado, si estamos animado podemos actualizar los paquetes que tenemos, así ya de paso.

Documentación del paquete installr

8. La documentación sobre installr , el paquete para instalar R está por aquí http://cran.r-project.org/web/packages/installr/index.html. Incluso te avisa si no necesitas actualizar porque tienes la última versión del programa.

Así que aquí me hallo con mi flamante nueva versión, apuntico de salir la 2.0
R version 3.1.3 (2015-03-09) -- "Smooth Sidewalk"

P.D. La verdad que es un paquete muy cómodo y muy recomendable.

miércoles, 4 de marzo de 2015

Medir nuestra Target Keywords en todo nuestro dominio

Acabo de leer un artículo sobre Keyword Target en todo el dominio que me ha gustado tanto que la voy a poner una nueva métrica para medir en mis informes SEO a partir de ahora.

La idea la vi en un artículo del SEJ (Search Engine Journal) escrito por Neil Pratel que es el cofundador de Kissmetrics y Quick Sprout. Ambos blogs siempre cuentan con post super interesantes y en profundidad.

La idea me ha parecido super buena ya que lo que pretende es tener en cuenta las keyword que queremos que Google nos tenga en cuenta con el sitio, así podemos ver en que paginas aparecen. Así mismo podemos escribir las variaciones semánticas de esas keywords para crear las famosas entidades o Entities  semánticas ahora que Google es mucho más semántico.

Según Neil Pratel muchos SEOs (equivocadamente) creen que pueden rankear las keywords para una o dos páginas de un blog en vez de ponerlo para todo el dominio. Según el autor está bien que hagan esto, poner las palabras claves por los artículos del blog, pero deberían hacerlo en todo el site.

Cómo medirlo

  1. Para poder medir esto hay que poner: inurl:nombre_de_domino "target keyword"
  2. ver los resultados de Google
  3. Comparar nuestro site con nuestros competidores

Según este artículo de este crack, ha medido los sitewides para estas ocurrencias de keywords y  el ranking es mayor cuántas más ocurrencias hay de estas keywords. Esto no quiere decir que cuánto más uso de estas keywords mejor es el ranking, pero sin embargo si que parece que es un factor importante.

Extra: A la hora de buscar los resultados en Google es muy aconsejable mirar que hacemos una búsqueda anónima por si nos toma los resultados personalidazos o el historial.

Herramientas para contar palabras

Y buscando una forma de hacer esto más fácil me he encontrado con esta página
http://www.contadordepalabras.com/ que puede ayudar para hacer las auditorias de contenido.

Más información y fuente

Para ver el artículo entero : http://www.searchenginejournal.com/7-hood-optimization-techniques-will-rock-seo/124140/