TableauとRの連携 -両者の強みを活かした使い方-

システムエグゼのBI技術ブログ

BI技術者の雑記

BIツールとRやPythonなどのプログラム言語のそれぞれの強みを活かしたデータ分析手法をご紹介します。

具体的には、ドラッグ&ドロップで簡単にデータを可視化できるBIツールであるTableauと、統計分析に強みを持つプログラム言語であるRを使用し、下記の流れでデータを可視化し、予測モデルを推定する方法になります。
①Tableauで分析対象データを可視化
②Rで予測モデルを推定
③Tableauで予測結果の可視化

内容のレベルは基礎的なものです。
これからTableauやRを用いてデータ分析をしてみたいと考えている方々の参考になれば幸いです。

1.Tableauで分析対象データを可視化

今回使用するデータはTableauのサンプルデータであるスーパーストアの売上データです。

まず、オーダー日が2020年1月から2023年12月までの48カ月分のデータを可視化して売上データの様子を確認してみましょう。
オーダー日((月、連続))を列シェルフ、売上((合計))を行シェルフに配置し、表示形式は折れ線グラフ(連続)を選択します。

月ごとに変動を伴いながら、年々、売り上げが大きくなっているように見えます。

分析タブから傾向線を追加して売り上げの傾向を把握してみましょう。(注1)

これまでの売上データは増加傾向をたどってきたことが分かります。
なんとなく、今後も売り上げが増加していきそうな気がしますね。

以上で売上データの可視化は終了です。 次はこの売上データを用いてRで予測モデルを推定します。

2. Rで予測モデルを推定

2-1.事前準備

まずはTableau上でRを使用するための準備をします。(注2)

まずはR側の準備です。
今回は統合開発環境RStudioを使用します。
PackagesタブからRserveというパッケージをインストールします。

インストール完了後、ソースエディタでlibrary()でRserveを読み込んで起動します。
コンソールに画像のような出力結果が出ていれば成功です。

これでR側の準備は完了です。
次にTableau側の準備です。
ヘルプ→設定とパフォーマンス→分析の拡張機能の設定管理からRserveの接続設定をします。

テスト接続で正常に接続されることを確認してください。
以上で準備完了です

2-2. Tableau上でRコードを実行

売上予測モデルを推定するためのRコードをTableauの計算フィールドに記述していきます。
今回は代表的な時系列モデルであるSARIMA(季節自己回帰和分移動平均)モデル推定します。
記述内容は以下となります。

オーダー日が2020年1月から2023年12月までの売上データを用いてSARIMAモデルという時系列モデルを予測モデルとして推定し、今後1年間(2024年1月から2024年12月)の売上予測値を求めるという記述内容になっています。
各コードの詳細な説明は省略します。(注3)
予測値の幅も必要な場合は予測値の95%信頼区間の上限と下限も併せて求めましょう。

Forecasted$upper、Forecasted$lowerがそれぞれ上限と下限に対応します。

以上でRによる予測モデルの推定は終了です。
次は予測モデルから得られた予測結果をTableauで可視化します。

3. Tableauで予測結果の可視化

前節で求めた予測値とその95%信頼区間の上限、下限を可視化してみましょう。
まず、オーダー日を1カ月先にずらした計算フィールドを作成し、列シェルフに配置します。

次にメジャーバリューを行シェルフに配置し、前節で作成した予測値と予測値の幅の計算フィールドをメジャーバリューシェルフに配置します。
さらに、メジャーネームをマークシェルフの色に配置し、メジャーバリューの色分けをします。

青が予測値、赤が予測値の95%信頼区間の上限、橙が95%信頼区間の下限です。
予測値の値だけを見ると売り上げの上昇傾向が続いていきそうですね。

ただ、95%信頼区間の幅はそれなりに大きいです。
例えば、2024年5月の予測値は約910万円、予測値の95%信頼区間の上限は約1,100万円、下限は約710万円です。
今後の売り上げが予測値から上下双方向にぶれることによるリスクを考慮する必要もありそうです。

4. おわりに

データの可視化から予測モデルの推定、予測結果の可視化の流れを簡単に紹介しました。

TableauまたはRのどちらか一方を使用するのではなく、両方を使用することでTableauのデータ可視化の強みとRの統計分析の強みをより効率的に発揮させることができると思います。(注4)

冒頭でもお伝えした通り、本稿の内容は基礎的なものに留まります。
特に予測モデル(SARIMA)の推定の部分は最低限の内容にとどめました。
予測モデルの数理的な側面やモデルの診断、予測性能評価、Rコードの詳細に興味がある方は、参考資料に挙げた「時系列分析と状態空間モデルの基礎RとStanで学ぶ理論と実装」、「実証のための軽量時系列分析」などを参照してください。

5. 参考資料

<書籍>

●黒木賢一・下山輝昌(2023)『BIツールを使ったデータ分析のポイント』秀和システム
●馬場真哉(2018)『時系列分析と状態空間モデルの基礎 RとStanで学ぶ理論と実装』プレアデス出版
●ウォルター・エンダース著、新谷元嗣・藪友良訳(2019)『実証のための計量時系列分析』有斐閣

<Webサイト>

Tableauから始めるデータサイエンス “Tableau + R連携を使いこなそう! その3-時系列分析に挑戦”(2023年9月18日閲覧)

Tableauヘルプ “分析拡張機能を使用した式の受け渡し”(2023年9月18日閲覧)

Tableauヘルプ “予測”(2023年9月18日閲覧)

Tableau Padawan’s Tips & Tricks  “TableauでRをつかってみよう!(準備編)” (2023年9月18日閲覧)

<動画>

Abhisheck Agarrwal “Time Series Forecasting Model ARIMA in Tableau using R | Advanced Tableau Course”(2023年9月18日閲覧)

6. 注記

●注1

この傾向線は単回帰分析で求められた回帰直線です。
式の詳細は分析→傾向線→傾向モデルの説明で確認することができます。

●注2

この設定は無料で使用できるTableau Publicでは設定できません。
ご注意ください。

●注3

append()について補足します。
Tableau側からの入力データ(以下、TDと表記)の数とR側から返されるデータ(以下、RDと表記)の数が一致していなければなりません。
TDは2020年1月から2023年12月までの48個のデータです。
R側で予測した2024年1月から2024年12月までの12個のデータをTDに単純に結合させてしまうと、48+12で60個のデータ数となり、TDの数RDの数が一致しません。
よって、RDはTDから2020年1月から2020年12月の部分を除外したもの(36個)に、予測結果(12個)を結合させてTDと数を一致させています。
詳細は「Tableau + R連携を使いこなそう!その3-時系列分析に挑戦」などを参照してください。

●注4

本ブログでは予測モデルの推定をRで行いましたが、Tableauにも予測機能が実装されています。
詳細はTableauヘルプの「予測」などを参照してください。

※ Tableauは、Salesforce, Inc.の米国およびその他の国における商標または登録商標です。

BI_banner01.png