Cet article a été publié dans le cadre du Blogathon sur la science des données.
introduction
Dans cet article, Je vais montrer comment nous pouvons effectuer une analyse de régression et optimiser le prix de location dans R, puis collez la valeur dans excel, qui se reconnectera plus tard à Tableau pour effectuer d'autres calculs avec d'autres champs de l'ensemble de données d'origine.
Ce type d'intégration transparente entre 3 Différents outils d'analyse peuvent aider les analystes de données à mener des enquêtes statistiques dans R, puis migrez les résultats dans Tableau et visualisez-les de manière digeste pour les lecteurs professionnels.
Introduction à l'ensemble de données utilisé et aux exigences de l'entreprise
L'ensemble de données pour cet exemple est tiré du projet Capstone au sein de « Excel un MySQL: Techniques d'analyse pour les entreprises ». Ceci est un tableau qui contient des informations sur les propriétés locatives d'une entreprise, avec des informations sur le taux d'occupation des locations de courte durée et le prix moyen de location par nuit. Nous avons également des données sur le prix dans le centile 10 et centile 90 de propriétés similaires dans la même région.
Notre exigence commerciale est de trouver un prix optimisé pour chaque propriété, afin que les revenus puissent être maximisés. Puisque le revenu est fonction du taux d'occupation * prix de location par nuit * 365 (en supposant que la propriété peut être louée toute l'année), il faut exprimer le taux d'occupation en fonction du prix de location par nuit, ce qui peut être fait par une simple régression linéaire
La tâche suivante consiste à exécuter la fonction R optim, tout comme nous utilisons Solver dans Excel, pour chaque propriété ou chaque ligne de l'ensemble de données.
Avec le prix optimisé et le taux d'occupation attendu, nous pouvons calculer le bénéfice brut total de l'entreprise et faire de nombreuses autres analyses.
Connectez R avec Tableau

Nous devons d'abord connecter Tableau avec R.
Avant de connecter R à Tableau, assurez-vous que votre console R a déjà installé Rserve.
library("Rserve")
Rserve()
À présent, R devrait imprimer ‘Iniciando Rserve …’. Si vous voyez ce résultat, alors R communique avec Tableau pour établir une connexion.
2) Ouvrez Tableau et cliquez sur Aide> Configuration et performances> Gérer les connexions de services externes.
3) Dans la boîte de dialogue qui s'ouvre, choisir ‘hôte local’ para Servidor y escriba ‘6311’ pour Puerto.
4) Alors, cliquez sur Tester la connexion
À présent, une boîte de dialogue devrait apparaître disant: ‘Conectado con éxito al servicio R serve’. Cela signifie que vous êtes prêt à utiliser R avec Tableau
Créer un champ calculé qui exécute le code R dans Tableau
Créez un champ calculé et collez le code suivant:
SCRIPT_REAL(
"df <- trame de données(.arg1,.arg2,.arg3,.arg4,.arg5)
maquette <-lm(données=df,.arg1 ~ .arg2)
Créer une fonction de revenus.
revenu <- une fonction(Les données,par) {
par_vs_10th <- par-données$.arg3
prix_normalisé <-0.1+0.8*par_vs_10th/data$.arg5
fcst_occupation <-coef(maquette)['(Intercepter)']+coef(maquette)['.arg2']*prix_normalisé
fcst_st_revenue <-fcst_occupancy*365*par
fcst_st_revenue
}
Exécuter l'optim pour chaque ligne dans df. Trouver la valeur de "par"-prix de location-qui peut optimiser la fonction de revenu
pour (je suis dans 1:maintenant(df))
{df[je,'optimized_price'] <-optimum(122,revenu,données=df[je,],method='L-BFGS-B', contrôle=liste(échelle fn = -1),inférieur=df[je,'.arg3']) }
#retourner le prix optimisé en sortie pour le champ calculé
df$optimisé_prix",
somme([Taux d'occupation]),
moyenne([sample_price_percentile]),
moyenne([Percentile10E Prix]),
moyenne([Prix centile 90e]),
moyenne([percentile_90th_vs_10th]),
attr([Identifiant de la propriété Ws]))
Le code R doit être écrit dans une fonction comme SCRIPT_REAL, qui renvoie des valeurs numériques. Il existe d'autres fonctions R similaires dans Tableau, como SCRIPT_BOOL et SCRIPT_INT, en fonction des valeurs que vous souhaitez récupérer.
Avant de courir, nous devons créer une table: df <-trame de données (.argument1, .arg2,…)
.argument1, .arg2… sont les champs de source de données dans Tableau. Ce sont les mots en gras du code. .arg1 est le taux d'occupation, .arg2 est le sample_price_percentile.
Le R_code sera mis entre crochets (""). La dernière ligne de code: df $ optim_price déterminera la valeur de retour pour ce calcul.
Pour une explication détaillée sur l'exécution de la régression linéaire et optimale dans R, voir lien ci-dessous:
Ce calcul est un calcul de table. Assurez-vous qu'il est calculé avec l'ID de propriété.

Créons une vue pour voir cette mesure.

Maintenant, nous avons optimisé le prix de chaque propriété.
Cependant, maintenant un problème survient. Cette mesure est un calcul de table et nous ne pouvons avoir qu'une seule valeur par propriété en la regardant dans une table. Nous ne pouvons pas l'intégrer dans un autre calcul.
Par exemple, Je souhaite normaliser le prix optimisé à une valeur centile à l'aide de la formule suivante:
0,1 + 0,8 * (prix optimisé prix au 10e centile) / (90e centile contre 10e)
Tableau va générer une erreur, disant que nous ne pouvons pas mélanger une mesure agrégée avec une valeur non agrégée. C'est vraiment gênant et inflexible, car nous pouvons vouloir tirer parti d'un calcul codé R pour beaucoup plus de mesures.

Pour atténuer ce problème, J'ai trouvé une solution de contournement: écrire des valeurs optimisées R dans un fichier csv ou excel, luego una este nuevo conjunto de datos con la Source des donnéesOngle "Source des données" désigne tout lieu ou support où des informations peuvent être obtenues. Ces sources peuvent être à la fois primaires et, tels que les enquêtes et les expériences, en tant que secondaire, comme bases de données, articles universitaires ou rapports statistiques. Le bon choix d’une source de données est crucial pour garantir la validité et la fiabilité des informations dans la recherche et l’analyse.... original en Tableau para la creación de otras visualizaciones o medidas.
Intégration finale
Créons un autre champ de calcul dans Tableau, appelé Script. Cette fois, nous ne retournerons pas de valeur numérique, mais nous écrirons les sorties dans un fichier CSV externe. Dans mon exemple, J'écris en CSV pour plus de simplicité, mais vous pouvez également écrire dans un fichier xlsx si vous préférez.
SCRIPT_REAL(
"df <- trame de données(.arg1,.arg2,.arg3,.arg4,.arg5)
maquette <-lm(données=df,.arg1 ~ .arg2)
revenu <- une fonction(Les données,par){
par_vs_10th <- par-données$.arg3
prix_normalisé <-0.1+0.8*par_vs_10th/data$.arg5
fcst_occupation <-coef(maquette)['(Intercepter)']+coef(maquette)['.arg2']*prix_normalisé
fcst_st_revenue <-fcst_occupancy*365*par
fcst_st_revenue
}
pour (je suis dans 1:maintenant(df)) {df[je,'optimized_price'] <-optimum(122,revenu,données=df[je,],method='L-BFGS-B', contrôle=liste(échelle fn = -1),inférieur=df[je,'.arg3']) }
df$prix_normalisé_optimisé<-0.1+0.8*(df$optimized_price-df$.arg3)/(df$.arg5)
#Créer un nouveau dataframe, remplacement de .arg2(sample_percentile_price) avec le prix optimisé normalisé
Nouveau <-trame de données(.arg2=df$prix_normalisé_optimisé)
#Prédisez le taux d'occupation en fonction du prix optimisé et ajoutez en tant que nouvelle colonne à df
df['Forecast Occupancy']=prédire.lm(maquette, nouvellesdonnées=nouveau)
#Ajouter l'ID de propriété à df
df['Ws Property Id']= .arg6
#Écrire df dans un fichier csv
écrire.table(df,'D:/Documents/Analyse commerciale/4. Visualization/Business Capstone/Blogathon/new.csv',sep=',',row.names=FAUX,citation=FAUX,col.noms = VRAI)
",
somme([Taux d'occupation]),
moyenne([sample_price_percentile]),
moyenne([Prix du 10e centile]),
moyenne([Prix centile 90e]),
moyenne([percentile_90th_vs_10th]),
attr([Identifiant de la propriété Ws]))
L'étape suivante consiste à créer une nouvelle feuille, appelé Feuille 2, par exemple. Ensuite, faites glisser l'ID de propriété et la mesure de script vers Détails sur la carte de marque.
Vous devriez voir un message comme le suivant:

Ignorez simplement ce message d'erreur. Ouvrez le dossier que vous avez spécifié dans le script de calcul et vous verrez qu'un nouveau fichier CSV vient d'être créé.


Notre prochaine tâche est plus simple, connectez simplement le classeur Tableau avec ce fichier csv et fusionnez-le avec la source de données d'origine, selon la clé étrangère: ID de propriété WS.

À présent, dans le PanneauUn panel est un groupe d’experts qui se réunit pour discuter et analyser un sujet spécifique. Ces forums sont courants lors des conférences, Séminaires et débats publics, où les participants partagent leurs connaissances et leurs points de vue. Les panneaux peuvent aborder une variété de domaines, De la science à la politique, et son objectif est d’encourager l’échange d’idées et la réflexion critique entre les participants.... de données, un nouvel ensemble de données est disponible pour utilisation.

Puisque nous avons le prix optimisé et le taux d'occupation attendu comme champs normaux, nous pouvons les utiliser pour des calculs supplémentaires sans problèmes liés au niveau supplémentaires comme ci-dessus.
Supposons que je veuille créer une mesure appelée Revenu brut = Prix optimisé * Taux d'occupation * 365. Le calcul est maintenant valide.

Dans le futur, en caso de que haya cambios en los datos de entraînementLa formation est un processus systématique conçu pour améliorer les compétences, connaissances ou aptitudes physiques. Il est appliqué dans divers domaines, Comme le sport, Éducation et développement professionnel. Un programme d’entraînement efficace comprend la planification des objectifs, Pratique régulière et évaluation des progrès. L’adaptation aux besoins individuels et la motivation sont des facteurs clés pour obtenir des résultats réussis et durables dans toutes les disciplines.... (signe de prix par nuit), ou si vous ajoutez plus de fonctions au modèle linéaire. Ouvrez simplement la feuille 2 à nouveau pour réactiver le processus et récupérer de nouveaux résultats.
Remarques finales
La possibilité d'écrire du code R dans un calcul rend Tableau plus flexible que son rival, BI de puissance, en termes de connexion avec des plateformes d'analyse de données externes. Lors de la combinaison de Tableau, Excel et R, nous pouvons utiliser la puissance de nombreux outils simultanément pour nos pratiques analytiques.
Avoir d'autres idées et cas d'utilisation liés à l'utilisation de Python et R dans Tableau? N'hésitez pas à commenter cet article..



