Este artículo fue publicado como parte del Blogatón de ciencia de datos.
Introducción
En este artículo, mostraré cómo podemos ejecutar un análisis de regresión y optimizar el precio de alquiler en R, luego pegar el valor en Excel, que posteriormente se conectará a Tableau nuevamente para realizar más cálculos con otros campos en el conjunto de datos original.
Este tipo de integración perfecta entre 3 herramientas de análisis diferentes puede ayudar a los analistas de datos a ejecutar investigaciones estadísticas en R, luego migrar los resultados en Tableau y visualizarlos de manera digerible para los lectores de negocios.
Introducción sobre el conjunto de datos utilizado y los requisitos comerciales
El conjunto de datos de este ejemplo se extrae del proyecto Capstone dentro de «Excel a MySQL: Técnicas analíticas para empresas». Esta es una tabla que contiene información sobre las propiedades en alquiler de una empresa, con información sobre la tasa de ocupación del alquiler a corto plazo y el precio promedio del alquiler por noche. También tenemos datos sobre el precio en el percentil 10 y percentil 90 de propiedades similares en la misma región.
Nuestro requisito comercial es encontrar un precio optimizado para cada propiedad, de modo que se puedan maximizar los ingresos. Dado que los ingresos son una función de la tasa de ocupación * precio de alquiler por noche * 365 (asumiendo que la propiedad se puede alquilar durante todo el año), necesitamos expresar la tasa de ocupación como una función del precio de alquiler por noche, lo cual se puede hacer mediante regresión lineal simple
La siguiente tarea es ejecutar la función R optim, al igual que usamos Solver en Excel, para cada propiedad o cada fila del conjunto de datos.
Con el precio optimizado y la tasa de ocupación prevista, podemos calcular el beneficio bruto total de la empresa y hacer muchos otros análisis.
Conecte R con Tableau
Primero debemos conectar Tableau con R.
Antes de conectar R con Tableau, asegúrese de que su consola R ya haya instalado Rserve.
library("Rserve")
Rserve()
Ahora, R debería imprimir ‘Iniciando Rserve …’. Si observa este resultado, entonces R se está comunicando con Tableau para establecer una conexión.
2) Abra Tableau y haga clic en Ayuda> Configuración y rendimiento> Administrar conexiones de servicios externos.
3) En el cuadro de diálogo que se abre, elija ‘localhost’ para Servidor y escriba ‘6311’ para Puerto.
4) Luego, haga clic en Probar conexión
Ahora, debería aparecer un cuadro de diálogo que diga: ‘Conectado con éxito al servicio R serve’. Significa que está listo para usar R con Tableau
Cree un campo calculado que ejecute código R en Tableau
Cree un campo calculado y pegue el siguiente código:
SCRIPT_REAL( "df <- data.frame(.arg1,.arg2,.arg3,.arg4,.arg5) model <-lm(data=df,.arg1 ~ .arg2) Create revenue function. revenue <- function(data,par) { par_vs_10th <- par-data$.arg3 normalized_price <-0.1+0.8*par_vs_10th/data$.arg5 fcst_occupancy <-coef(model)['(Intercept)']+coef(model)['.arg2']*normalized_price fcst_st_revenue <-fcst_occupancy*365*par fcst_st_revenue } Run optim for each row in df. Find the value of "par"-rent price-that can optimize revenue function for (i in 1:nrow(df)) {df[i,'optimized_price'] <-optim(122,revenue,data=df[i,],method='L-BFGS-B', control=list(fnscale=-1),lower=df[i,'.arg3']) } #return optimized price as output for calculated field df$optimized_price", sum([OccupancyRate]), avg([sample_price_percentile]), avg([Percentile10Th Price]), avg([Percentile 90Th Price]), avg([percentile_90th_vs_10th]), attr([Ws Property Id]))
El código R debe escribirse en una función como SCRIPT_REAL, que devuelve valores numéricos. Hay otras funciones R similares en Tableau, como SCRIPT_BOOL y SCRIPT_INT, según los valores que desee recuperar.
Antes de ejecutar, debemos crear una tabla: df <-data.frame (.arg1, .arg2,…)
.arg1, .arg2… son los campos de fuentes de datos en Tableau. Son las palabras en negrita del código. .arg1 es la tasa de ocupación, .arg2 es el sample_price_percentile.
El R_code se escribirá entre corchetes (”“). La última línea de código: df $ optim_price determinará el valor de retorno para este cálculo.
Para obtener una explicación detallada sobre la ejecución de la regresión lineal y óptima en R, consulte el enlace a continuación:
Este cálculo es un cálculo de tabla. Asegúrese de que se calcule junto con el ID de propiedad.
Creemos una vista para ver esta medidaLa "medida" es un concepto fundamental en diversas disciplinas, que se refiere al proceso de cuantificar características o magnitudes de objetos, fenómenos o situaciones. En matemáticas, se utiliza para determinar longitudes, áreas y volúmenes, mientras que en ciencias sociales puede referirse a la evaluación de variables cualitativas y cuantitativas. La precisión en la medición es crucial para obtener resultados confiables y válidos en cualquier investigación o aplicación práctica.....
Ahora hemos optimizado el precio de cada propiedad.
Sin embargo, ahora se produce un problema. Esta medida es un cálculo de tabla y solo podemos tener un único valor por propiedad al observarlo en una tabla. No podemos incrustarlo dentro de otro cálculo.
Por ejemplo, quiero normalizar el precio optimizado en un valor percentil usando la siguiente fórmula:
0,1 + 0,8 * (precio optimizado-percentil 10º precio) / (percentil 90º frente al 10º)
Tableau generará un error, diciendo que no podemos mezclar una medida agregada con un valor no agregado. Esto es realmente inconveniente e inflexible, ya que es posible que deseemos aprovechar un cálculo con código R para muchas más medidas.
Para mitigar este problema, se me ocurrió una solución alternativa: escriba los valores optimizados para R en un archivo csv o excel, luego una este nuevo conjunto de datos con la fuente de datosUna "fuente de datos" se refiere a cualquier lugar o medio donde se puede obtener información. Estas fuentes pueden ser tanto primarias, como encuestas y experimentos, como secundarias, como bases de datos, artículos académicos o informes estadísticos. La elección adecuada de una fuente de datos es crucial para garantizar la validez y la fiabilidad de la información en investigaciones y análisis.... original en Tableau para la creación de otras visualizaciones o medidas.
Integración final
Creemos otro campo de cálculo en Tableau, llamado Script. Esta vez no devolveremos un valor numérico, sino que escribiremos las salidas en un archivo CSV externo. En mi ejemplo, escribo en CSV por simplicidad, pero también puede escribir en un archivo xlsx si lo prefiere.
SCRIPT_REAL( "df <- data.frame(.arg1,.arg2,.arg3,.arg4,.arg5) model <-lm(data=df,.arg1 ~ .arg2) revenue <- function(data,par){ par_vs_10th <- par-data$.arg3 normalized_price <-0.1+0.8*par_vs_10th/data$.arg5 fcst_occupancy <-coef(model)['(Intercept)']+coef(model)['.arg2']*normalized_price fcst_st_revenue <-fcst_occupancy*365*par fcst_st_revenue } for (i in 1:nrow(df)) {df[i,'optimized_price'] <-optim(122,revenue,data=df[i,],method='L-BFGS-B', control=list(fnscale=-1),lower=df[i,'.arg3']) } df$normalized_optimized_price<-0.1+0.8*(df$optimized_price-df$.arg3)/(df$.arg5) #Create a new dataframe, replacing .arg2(sample_percentile_price) with the normalized optimized price new <-data.frame(.arg2=df$normalized_optimized_price) #Predict the occupancy rate based on optimized price and add as a new column to df df['Forecast Occupancy']=predict.lm(model, newdata=new) #Add Property ID to df df['Ws Property Id']=.arg6 #Write df to a csv file write.table(df,'D:/Documents/Business Analytics/4. Visualization/Business Capstone/Blogathon/new.csv',sep=',',row.names=FALSE,quote=FALSE,col.names = TRUE) ", sum([Occupancy Rate]), avg([sample_price_percentile]), avg([Percentile 10Th Price]), avg([Percentile 90Th Price]), avg([percentile_90th_vs_10th]), attr([Ws Property Id]))
El siguiente paso es crear una nueva Hoja, llamada Hoja 2, por ejemplo. A continuación, arrastre ID de propiedad y medida de secuencia de comandos a Detalle en la tarjeta de marca.
Debería ver un mensaje como el siguiente:
Simplemente ignore ese mensaje de error. Abra la carpeta que especificó en el cálculo de la secuencia de comandos y verá que se acaba de crear un nuevo archivo CSV.
Nuestra siguiente tarea es más simple, simplemente conecte el libro de trabajo de Tableau con este archivo csv y combínelo con la fuente de datos original, según la clave externa: ID de propiedad WS.
Ahora, en el PanelUn panel es un grupo de expertos que se reúne para discutir y analizar un tema específico. Estos foros son comunes en conferencias, seminarios y debates públicos, donde los participantes comparten sus conocimientos y perspectivas. Los paneles pueden abordar diversas áreas, desde la ciencia hasta la política, y su objetivo es fomentar el intercambio de ideas y la reflexión crítica entre los asistentes.... de datos, hay un nuevo conjunto de datos disponible para su uso.
Dado que tenemos el precio optimizado y la tasa de ocupación prevista como campos normales, podemos usarlos para cálculos adicionales sin problemas relacionados con el nivel agregado como anteriormente.
Supongamos que quiero crear una medida llamada Ingresos brutos = Precio optimizado * Tasa de ocupación * 365. El cálculo ahora es válido.
En el futuro, en caso de que haya cambios en los datos de entrenamientoEl entrenamiento es un proceso sistemático diseñado para mejorar habilidades, conocimientos o capacidades físicas. Se aplica en diversas áreas, como el deporte, la educación y el desarrollo profesional. Un programa de entrenamiento efectivo incluye la planificación de objetivos, la práctica regular y la evaluación del progreso. La adaptación a las necesidades individuales y la motivación son factores clave para lograr resultados exitosos y sostenibles en cualquier disciplina.... (muestra del precio por noche), o si agrega más funciones al modelo lineal. Simplemente abra la Hoja 2 nuevamente para reactivar el proceso y recuperar nuevos resultados.
Notas finales
La capacidad de escribir código en R en un cálculo hace que Tableau sea más flexible que su rival, Power BI, en términos de conexión con plataformas de análisis de datos externas. Al combinar Tableau, Excel y R, podemos utilizar el poder de muchas herramientas simultáneamente para nuestras prácticas analíticas.
¿Tiene otras ideas y casos de uso relacionados con el uso de Python y R en Tableau? No dudes en comentar este artículo..