En utilisant des paquets de prévision R de Tableau, Bora Beran
Une question commune au sujet de fonctionnalité d'intégration R dans le Tableau 8.1 est comment l'utiliser avec des paquets de prévision disponibles dans R. Ceci est une question intéressante pour deux raisons:
fonctions SCRIPT_ sont des champs calculés et des champs calculés ne correspondent pas à la table des lignes alors que la prévision est ce que est tout au sujet.
forfaits Prévisions retour normalement juste les résultats prévisionnels qui est moins de lignes que les données d'entrée et en même temps, n'a pas de sens de se joindre avant.
Voici un fil pertinent des forums Tableau.
Avant de passer plus loin, je voudrais souligner que Tableau a construit dans la fonctionnalité de prévision qui fait le plus de ce que nous couvrirons ici possible avec le clic d'un bouton et est livré avec beaucoup d'autres caractéristiques de commodité. Le but du blog est de montrer une autre approche tout peut être très compliqué utile pour certains.
L'exemple dans les forums utilise le package FPP. Pour plus de variété dans ce blog, je vais utiliser le paquet de prévisions. Il est intéressant de noter que, nous avons travaillé en étroite collaboration avec le professeur Hyndman, l'auteur du paquet de prévisions de R lors du développement de la fonction de prévision dans le Tableau 8.
Commençons par la visualisation de la forme et des résidus pour vos prévisions dans l'échantillon. Vous trouverez dans la première feuille du classeur que j'ai fourni un lien pour à la fin du poste.

Nous avons deux séries chronologiques dans ce tableau. Pour réduire le trafic réseau, je récupérai les deux colonnes dans un seul appel à Rserve. Jetons un coup d'oeil au calcul.
comme séparateur qui nous permet de retrouver les deux colonnes à la fois. Puis, dans les champs calculés nommés Fit et Residuals, nous segmentons les résultats. Un seul des champs calculés est indiqué ci-dessous par souci de concision.
Jusqu'à présent, nous avons eu affaire à la nous n'avons pas encore touché les prévisions dans l'échantillon, la question de base sur la façon de récupérer les prévisions futures dans Tableau. Sans plus tarder, nous allons passer à la partie plus excitante. Je vais montrer deux approches. Le premier est le déplacement de domaine qui est représentée sur la seconde feuille.
Notre calcul comme indiqué ci-dessus est très similaire à celui que nous avons examiné plus tôt. Mais cette fois-ci, nous demandons une prévision (moyenne) de longueur (h =) fixé par le paramètre Tableau nommé [PeriodsToForecast] et en utilisant ajouter des fonctions à ajouter les lignes prévues à la fin de la colonne [Salaire] (qui répond à la question 2 ci-dessus) tout en laissant tomber seulement autant de lignes à partir du haut. Le résultat est illustré ci-dessous. Étant donné que nous prévoyons 10 trimestres, nos séries chronologiques couvrent maintenant 2,5 années au-delà de 1980, mais notre tableau ne démarre à 1960 plus.

Nous y parvenons également en déplaçant l'axe de la date du même montant, comme indiqué ci-dessous.
Mais si vous ne voulez pas couper les lignes depuis le début de vos données? C'est là vient à notre densification aide.
La seconde approche repose sur le fait que peut remplir Tableau les valeurs manquantes étant donné une plage. Ce que nous allons faire est de changer le dernier point de données à la date à laquelle nous voulons que nos prévisions à la fin. Cela va créer un écart entre la dernière valeur et la précédente et l'option « Afficher les valeurs manquantes » de Tableau ajoutera automatiquement les lignes pour combler cette lacune.

La dernière date est déplacée hors de fournir la mesure de date complète de prévision en utilisant le champ calculé suivant. Ici [MaxDate] est créé au niveau de la source de données en se joignant à la table principale avec une sous-requête qui renvoie le MAX (trimestre) dans les données d'entrée.
Notre champ calculé est très similaire au calcul précédent. Des changements importants sont mis en évidence ce qui implique la suppression de la densification des lignes vides ajoutée à partir des données transmises à la fonction de prévision de R en entrée et en tirant le dernier point de données décalées à la date correcte pour la fonction de prévision. Ensuite, les résultats se refusionnés en utilisant la même fonction append mais cette fois sans que rien se rognées.
Le résultat est illustré ci-dessous. À titre de comparaison, nous prévoyons 10 trimestres (comme ci-dessus). Maintenant, notre série chronologique prolonger au-delà de 2,5 années 1980 alors que le graphique commence encore à 1960.

Vous pouvez télécharger le classeur exemple de ICI.
Le code suivant fonctionne en R, mais il ne fonctionne pas dans le Tableau.
Erreur: Une erreur est survenue lors de la communication avec le service de Rserve.
Erreur dans seq.default (l + 1, l + n). « To » doit être de longueur 1
l <- as.numeric(length(.arg1));
n <- .arg2;
LREVENUE <- log(.arg1);
période de temps <- seq(l);
période de temps <- as.numeric(timeperiod);
FIT1 = lm (LREVENUE
période de temps);
Intercepter <- fit1$coefficients[[1]];
Pente <- fit1$coefficients[[2]];
timeprd = seq (l + n);
timeprd <- as.numeric(timeprd);
tendance <- Intercept + Slope*timeprd;
ts = data.frame (timeprd, tendance);
trnd <- fit1$fitted.values;
restant <- LREVENUE/trnd;
seasonal_factor <- c();
for (i in seq (n)) v = moyenne (restante [seq (i, l, n)])
seasonal_factor [i] <- v[1]
>
sf <- ts$trend[seq(l+1,l+n)]*seasonal_factor;
sf <- exp(sf);
actualrevenue <- exp(LREVENUE);
actualrev <- actualrevenue[seq(n+1, l)];
tour <- append(actualrev, sf);
tour
J'ai essayé de résoudre le problème de la semaine dernière et je ne pouvais pas trouver la raison, pourriez-vous s'il vous plaît me aider?
Merci d'avance!
Merci d'avance !
Bien sûr vous pouvez. Si vous ouvrez le classeur d'exemple dans le Tableau et sélectionnez l'option de table de texte Montrez-moi, cela devrait fonctionner.
Peut-on tracer la visualisation R en tableau ...?
Si vous écrivez à un fichier, vous pouvez l'afficher dans une fenêtre à l'intérieur d'un tableau de bord en pointant vers son URL.
Bonjour Bora. Merci pour la réponse rapide. désolé je ne pouvais pas faire le point de la déclaration peut vous s'il vous plaît expliquer.
Ma tentative, par exemple, en fonction SCRIPT_ *, en utilisant hist (x) fonction de R pour tracer sur tableau, mais il ne se passe pas ...
dit Phillip Lowe:
Salut Bora, je aime vraiment ce blog!
Il est une grande répartition de la façon d'intégrer R avec Tableau et créer une prévision utilisable Mesure dans le Tableau. Ceci est une grande amélioration à la prévision qui est dans la section Analytics que vous pouvez réellement utiliser la mesure dans d'autres calculs.
Je me demandais si vous pouviez me aider à obtenir la partie append / travailler de densification.
Je l'ai utilisé le même script comme dans votre exemple, mais à la fois 1er et 2e scripts append je reçois l'erreur « résultat retourné par la fonction SCRIPT est de type inattendu.
J'ai essayé quelques variantes différentes du script, mais il ne semble pas fonctionner.
Seriez-vous capable de partager la SCRIPT_ exacte que vous utilisez ici? Il serait bon de voir quel type d'objet de votre résultat final est.