リストから選んだ全く別のウェブサイトを表示

Nanaeです。こんにちは。

URLフィルターに関連するテクニックです。選択した項目ごとに全く別のWebサイトを表示させる方法です。

★URLアクション
通常、選択した項目によって表示させるWebサイトを変えたいとき、URLアクションを使おうと考えると思います。たとえばこんな感じ。上の地図でJapanをクリックするとWikipediaの中で"Japan"のWikipediaサイト、Chinaをクリックすると"China"のWikipediaサイトを表示させることができます。

そのとき、URLアクションの設定画面では、Wikipediaの検索ワード前までのURLを入れ、連動させたいフィールドをそのうしろに入れますよね。

★パラメータを使ったURL連動
ここまでは通常の使い方ですが、選択した項目によって、全く別のサイトを表示させたいこともあると思います。Wikipedia内など1つのサイト内でのページではなく、たとえば、"日本"を選択したときは日本が運営している日本観光サイト、"中国"を選択したときは中国が運営している中国観光サイトなど、全く別のWebサイトに飛びたいといったニーズです。これは、URLアクションではなくパラメーターを使うことで実現します。

(ここから先で作るダッシュボードの完成図)

☆パラメータを使って全く別のWebページを表示させる
まず、パラメーターを作成します。URLは、このパラメーター作成画面でリストとして入力します。右側の表示名は、シート内でパラメーターを選択するリストとして出てくる文字なので、わかりやすく国の名前を書いておきます。

これをダッシュボード内に配置するWebページのオブジェクトに入れ込みます。このURLの入力エリアには、パラメーターも入れられるのです!


これで、パラメータに連動した、全く別のWebサイトを表示させることができるようになります!


☆パラメータを使ってフィルターされたVizを作る
次に、パラメータで日本が選択されているとき、上のシートにある地図では日本だけに絞った表示をしたいと思います。

地図ではこんなデータを使いました。観光での人気 Top 100の都市における2015年の入国人数のデータで、東アジアだけをピックアップしています。

まず、国と都市名でマッピングを行います。
次に、パラメータで日本が選択されているときには、Japanの地図だけを表示させるような仕組みを作ります。日本が選択されているとき、内部でパラメータがもっている値は日本のサイトのURLですので、URLとJapanを対応させる必要があります。このやり方を2種類お伝えします。

①計算フィールドを使う方法
URLとデータにある国を一つづつ対応させます。処理内容はわかりやすいと思います。

こんな流れで、Japan↔URL↔日本を引き継いでいます。

最後に、パラメーターで日本が選択されているとき、地図の方はJapanのデータだけ見せるようにするために、上の計算フィールドとデータにある国のフィールドが一致しているかどうかの計算フィールドを作ります。

これを満たすとき、すなわち"真"のときだけ、地図を表示させるフィルターを設定します。

②プライマリグループを使う方法
URLと国の対応表を作成して、接続します。


国でリレーションを張ってブレンドしてから、行の中に、プライマリとして元のデータから国、セカンダリとしてURLと国の対応データからURLを入れ、プライマリグループを作成します。

元のデータに、URLというグループができました。


国をグループ化したものですが、新しくURLという列ができているような動きをします。


こちらは元のデータにURL列を持ってきているので、流れはもっとシンプルになります。

最後に、上のURL列とパラメータが一致しているかどうかの計算フィールドを作り、"真"でフィルターをかけます。


これで、パラメーターで国名を選択すると、その国のデータにフィルターがかかった地図と、選択した国のWebサイトが表示されるようになりましたー!!!
ぜひ使ってみてください★

Nanae

クラスター分析をやってみよう! ~アルコール消費量から都道府県をグルーピングする~

皆さまこんにちは、 bashiiです。

突然ですが、 V10の新機能、クラスタリング(クラスター分析)機能って、みなさん使われていますか?
とても便利な機能なのですが、まだ使ったことがない・・・いまいち使いどころがわからない・・・といった方もいらっしゃるのではないでしょうか?

ということで; 今回は Tableau Version 10からの新機能であるクラスタリング機能について、面白い利用方法を考察してみたいと思います。

最終的にはアルコール消費量のデータからクラスター分析を用いて県民性を覗いてみたいと思います。 
(↓イメージ図)



◆ クラスタリングとは何か
クラスタリングとは簡単にいうと、物事をその特徴に応じて、いい感じのグループに分けるということです。これをクラスター分析と言い、機械学習の一つとして位置づけられます。

ビジネスの分野でもマーケティングの戦略立案や製品ポジショニングの分析などに利用されています。
例えば製品の中で季節ごとの売れ筋商品のグループを作り、製品グループごとのキャンペーンを行ったり、顧客の中からお得意様グループを見つけ出し、そのグループに対して特別なキャンペーンを行ったり・・・といった具合に、何かの施策をするときに特定のグループ分割を把握することでメリットが得られるシーンがあります。
このようなグルーピングを機械学習の力で行い、新たな気づきを得ることがクラスター分析の醍醐味と言えるでしょう。
クラスター分析の手法(データをグループに分割するアルゴリズム)としては、K-meansアルゴリズムが有名で、Tableau でもこの方法を採用しています。

(クラスター分析の厳密な定義については、いろいろなリンクがありますのでWebで検索ください。この記事では概要を感覚的に理解することを趣旨とさせていただきますのでご了承ください。)

◆ K-meansの仕組み
Tableauでも利用されているK-means法について簡単な説明をいたします。

1.まずクラスタの中心点を対象データからランダムにk個決める(例では2個)
2.各データを最も近くにある中心点のクラスタに割り当てる
3.クラスタ内のデータの平均値を新たなクラスタの中心点にする
4.各データを最も近くにある中心点のクラスタに割り当てる
5.クラスタ内のデータの平均値を新たなクラスタの中心点にする
6.各データを最も近くにある中心点のクラスタに割り当てる
7.クラスタ内のデータの平均値を新たなクラスタの中心点にする

8.各データを最も近くにある中心点のクラスタに割り当てる(上記手順を繰り返す)

9.繰り返しの結果、クラスタの中心点が変化しなくなったら終了

◆ Tableau での使い方
Tableau でK-meansのクラスタリングを実施する方法はいたって簡単です。

3種類のアイリス(アヤメ科の一種)の花弁の長さ、幅、花ガクの長さ、幅の4つの情報を標本として取得したデータセットがあります。(このデータはRやPythonに入っているとっても有名なデータセットです。)

このデータセットを散布図として表示します。
これをK-meansアルゴリズムを使ってクラスターに分類してみます。


操作はいたって簡単です。
アナリティクスタブを開く → 「クラスター」 を散布図にドラッグ
以上です。

花弁の長さ、幅、花ガクの長さ、幅の4つの情報をもとに、自動的に最適なクラスタ数を調整して分類した結果、クラスター1~クラスター3の3つのグループに標本を分類することに成功しました。

データセットには実際のアイリスの種別(Setosa,Versicolor,Virginica)の品種情報があるので、これに従って分類してみると以下のようになります。
・・・ほとんど変わらないですね。 

このケースでは、K-meansによって分類したグループが実際のアイリスの品種分類と変わらないことが分かります。つまり、K-meansによって分類がある程度言い当てられていることが感覚的に見て取れます。
Tableau でのクラスタリング機能の詳細については、以下のリンクを参照ください。
Understanding Clustering in Tableau 10 - writen by Bora Beran
https://boraberan.wordpress.com/?s=K-means

◆ アルコール消費量のデータから県民性がわかるか?
それではもう少し、現実的な例を取り上げてみましょう。
今ここで、ワイン、酒、焼酎、ビール、ウィスキーの一人当たりの消費量を得ることができたとします。

このデータから何が見えてくるでしょう。クラスター分析の前に、
まずデータの中身をざっくり見てみましょう。

アルコール消費量全体のランキングをとってみます。

1位 東京
2位 新潟
3位 大阪
4位 高知
5位 秋田

という結果でした。 大都市は飲食店も多くやはりアルコール消費量が多いようです。
次にワイン、酒、焼酎、ビール、ウィスキーの一人当たりの消費量を行と列に配置し散布図を作ってみます。さて、ここから何か情報が得られますか? 何か気づきましたか?

よく見てみると、アルコール種別ごとに消費量が突出している県があるようです。
例えば
日本酒は 新潟、秋田
ワインは 山梨、東京、長野、北海道
焼酎については断トツ宮崎、鹿児島。続いて熊本、大分といったとこでしょうか。
もうなんだか県民性が出てきましね。


次に傾向線に着目してみましょう。傾向として以下がみられるようです。
① 傾向線が右下がりであることから焼酎の消費量が増えると、日本酒の消費量は減る傾向にある
② 同様に日本酒の消費量が増えると焼酎の消費量は減る傾向がある
③ 傾向線が右上がりであることからビールの消費量が増えるとウィスキーの消費量が増える傾向にある


それではこの辺で本題のクラスター分析に入っていきたいと思います。
これらの傾向をもとにアルコール消費の嗜好別に都道府県をグループ化してみましょう。アルコール消費量に似たような傾向がある都道府県を同じグループにまとめまるということをします。

わかりやすいように、列と行の組み合わせを下のように減らしてみます。

ここにアナリティクスペインから「クラスター」をドラッグします。
クラスター数を4あたりに設定します。(クラスター数は面白い結果が出るところを試行錯誤する必要があるのですが、今回は4つから初めてみましましょう。)

「クラスター」をドラッグして、クラスター数を指定するだけで、クラスターによる色分けができましたね!
なんとなく、色分けされたクラスターごとにアルコール消費量の特徴が見えてきましたか?

Tableauのクラスター分析のとっても便利なところは、作成されたクラスターをグループとして、新しいディメンジョンに利用できるということなんです。(これは実はとても便利な機能です!)
video


色に作られた「クラスター」をディメンジョンエリアにドラッグしてみてください。
クラスターに所属する都道府県をグループにまとめたディメンジョンが追加されます。
これを「アルコール消費量クラスター」と名前を付けます。
新たにできたディメンジョンごとに、アルコールごとの消費量の比率を見てみます。
すると、クラスター1はビールの消費量が多いビール派。
クラスター2はワイン派。 クラスター3は焼酎派といった傾向が見えてきます。
このように、出来上がったクラスターを人間の主観で意味を検討しネーミングすることもクラスター分析の作業の一つです。

さて、作成されたクラスターを地図にマッピングしてみましょう!


圧倒的に、九州中南部、大分、熊本、宮崎、鹿児島は焼酎派! なんですね。ここは揺るぎがありません。
山梨と北海道はワイン派クラスター。日本海側にビール派が多いということも浮き上がってきましたように思います。

クラスターの数を5つにするとまた秋田、新潟の日本酒クラスターが出現しました。

このようにクラスターの数を変えたり、入力の変数を変えて意味のあるクラスターを試行錯誤して探っていくと、面白い発見に出会えるかもしれません。

アルコール消費量傾向によって都道府県をグループ化できれば、焼酎クラスター
である宮崎、鹿児島、大分、熊本で焼酎キャンペーンを実施したり、逆に消費量の少ない日本酒のキャンペーンをやってみるというのも新鮮かもしれません。

皆さんもお手持ちのデータをTableauのクラスタリング機能を使って分析してみてください。新たな発見が得られるかもしれません!!

ワークブックはこちらからダウンロードいただけます。
https://public.tableau.com/shared/Y38T47BC2?:display_count=yes

Tableauからデータサイエンスを始めましょう!!
では、またお会いしましょう・・・


参考文献:

DATA GO.JP
http://www.data.go.jp/

[DoSS@d - DATA] 都道府県別アルコール類の消費量
http://mo161.soci.ous.ac.jp/@d/DoDStat/sake/sake_dataJ.xml

Understanding Clustering in Tableau 10 - writen by Bora Beran
https://boraberan.wordpress.com/?s=K-means

クラスタリングの定番アルゴリズム「K-means法」をビジュアライズしてみた
http://tech.nitoyon.com/ja/blog/2009/04/09/kmeans-visualise/





すべてフィルターされているときにタイトルを表示させない方法

Nanaeです。

簡単な裏ワザです。フィルターをかけていて何も選択していないとき、シートにタイトルを表示させなくする方法です。

タイトル機能を使ってタイトルを表示すると、Vizがあろうとなかろうと常にタイトルを表示します。表示させるVizがないときはタイトルを出したくない場合、Vizの中にタイトルを組み込むことでタイトルを隠せます。

上がタイトル機能を使ってタイトルを表示したシート、下がタイトル化したものをVizに組み込んだシートです。


フィルターのチェックをすべて外します。上はチャートがないのにタイトルだけ残ってしまいました。下はタイトルもきちんと消えています。

下のシートの作成方法です。
タイトルをVizに組み込むには、計算フィールドでタイトルを表す文字列を作って、それを列に入れてヘッダーとして表示させます。


文字の大きさや配置などを書式設定から調節すれば完了です。

上の例でわざわざこのTipを使うことは少ないですが、たとえば次の場合に有効です。

気になる都道府県をクリックすると、その都道府県の時系列推移が出てくるようなダッシュボードを作りました。垂直方向のオブジェクトの中に2つのシートを入れ、何も選択していないときは時系列推移のチャートが表示されないフィルターアクションの設定にしています。

↓↓↓
↓↓↓静岡県をクリックしてみる
↓↓↓


都道府県の円をクリックしていないとき、下に時系列推移のチャートが隠れていますが、そのタイトルだけ見えていては不格好ですよね。


タイトルを非表示にしてしまうことはできますが、タイトルがあったほうがわかりやすいです。そんなときに使ってください!

Nanae


Tableau + R 連携を使いこなそう! その3 - 時系列分析に挑戦


bashiiです、こんにちは。

さて、今回は「Tableau+R連携を使って時系列分析を行う際のポイント」について紹介したいと思います。  

さてその前に「時系列分析」って何? というご質問もあるかと思いますので、簡単に説明するところから入りたいと思います。

例えば、店舗の売上、Webのアクセス数、株価などのデータは時間軸に沿って数値が時々刻々と変化していきますよね。これらの時系列に沿った傾向を理解することで、これから先に起こることを(ある程度)予測することを時系列分析といっています。

Tableau+R連携の入出力については、
Tableau + R 連携を使いこなそう! その1 - 簡単な足し算に挑戦 で紹介していますが、
実はTableauの入力データ数と、SCRIPT_* でRから返される出力数は同じにするという前提があるんです。
  
もしこれらに違いがあると下のように、「SCRIPT関数によって返された予期しない数の結果。関数はnの値を返す予定でしたが、mの値が返されました」という  
メッセージが出てしまいます。


しかし、時系列分析では現在までのデータに加えて予測した値が追加されるので、入力と出力の数が変わってくるということになります。これをTableauで実現するためにはちょっとした工夫が必要になってきます。

今回のポイントをまとめます。
1.時系列分析では入力となる実績値のデータ数と、出力となる予測値の数が異なる
2.ダミーのデータを使ってTableauから入力するデータ数とRから出力されるデータ数を合わせる
3.Rからの最終的な出力は実測値に予測値をくっ付けて返す
です。

なんのこと?ってかんじですね。 では内容を説明していきましょう。


以下のような時系列のデータがあるとします。とある会社の業績データが1960 Q1 から四半期ごとに1980年Q4 まで 84 期 記録されています。
これをもとにこの先の業績を時系列分析によって予測したいと思います。


■ その1.
最初は簡単な例で説明します。
添付ワークブックの「時系列シンプル-その1」 ワークシートをご覧ください。

実データの最終ポイント 1980 Q4から先の8つのポイント(8四半期)
つまり1982 Q4 まで予測値を出してみたいと思います。
今回の実データは84個あります。これに8つの予測値を加えて最終的な出力結果は 84+8=92 個 となります。

ここで前述の通り、Tableauから入力するデータ数とRから出力されるデータ数は
一致する必要があることをもう一度思い出していただきたいのです。

そこで第一ステップとして、実データに以下のように値をNULLとしたダミーのレコードを8つ追加します。

 え! データソースを変更するの?? と思うかもしれませんが、安心してください!!
ここではR連携の仕組みがわかりやすいように一時的に対応します。
(多くの場合、都度データソースにNULL値を追加するのは難しいと思いますが、この後の「その2」でデータソースを変更しない方法をご紹介します!)




実データの変動をグラフにすると以下のようになります。1980 Q4 までにデータが入っています。

パラメータから予測する期間を取得して予測値を出す計算式を作ります。
 



















計算式の中身が何をしているのかコメントを付けました。


これをグラフにすると以下のようになります。実績値にRによる予測値を付け加えたもの、下が実績値のみです。
分かりやすいように予測値に色を付けていますが1982年Q4までの予測値がオレンジで追加されていることが分かります。


ここで今一度計算式の中で何をしているのか Rの気持ちになって考えてみたいと思います。
Rstudioのコンソールから実際にコマンドを打ってみましょう。
簡単のため、実データとして、 1,2,3,4,5,6,7,8  が入っていてその先4 つの区間を予測するということをしてみましょう。
( もちろん、 9,10,11,12 が返ってくることが予測できますよね。。。)

> library(forecast);   
# forecastライブラリを 読み込みます。  

※ {forecast}パッケージは計量時系列分析にまつわる様々な関数を同梱していて、主にARIMAのモデルに代表される単変量時系列データを扱います。  

> .arg1 <- c (1,2,3,4,5,6,7,8,0,0,0,0)  
# Tableauからデータを入力することを想定して、.arg1 にベクトルとして1~8までの値を投入します。  
ここで、Tableauの入力データ数とRの出力データ数を合わせる必要があるので、末尾に4つのダミーデータを入れ  
合計のデータ数を 8+4=12 とします。  

> l<-length(.arg1); #入力データの数を代入  
> l  
[1] 12  

.arg1 の長さ(データの数)は12です。  

> .arg2 <- 4  

予測するポイントの数を 4 とします (Tableauからはパラメータとして入れられることを想定します)  

> u<-.arg1[1:(l-.arg2[1])];  
> u  
[1] 1 2 3 4 5 6 7 8  
.arg1 から実データのみを切り出します  

> n<-length(u);  
> n  
[1] 8  
実データのデータ数をとっておきます。  


> earnings_ts <- ts(u,deltat=1/4,start=c(1960,1));  
> earnings_ts  
     Qtr1 Qtr2 Qtr3 Qtr4  
1960    1    2    3    4  
1961    5    6    7    8  

ts()関数により、1~8のデータを 1960年1Q から始まり、四半期周期の時系列オブジェクト・データに割り当てます  
ただの数列に対して、それが時系列のデータですよということを定義してあげています。

> fcast <- forecast(earnings_ts, h=.arg2[1]);  
> fcast  
        Point Forecast Lo 80 Hi 80 Lo 95 Hi 95  
1962 Q1              9     9     9     9     9  
1962 Q2             10    10    10    10    10  
1962 Q3             11    11    11    11    11  
1962 Q4             12    12    12    12    12  

forecast()関数で実際に予測を行います。予測の期間は4点ですので、  
1962 Q1 から 1962 Q4 までの予測値が計算されます。  

forcast関数の意味についてはこちらを参照ください  
https://cran.r-project.org/web/packages/forecast/forecast.pdf  

> append(u,fcast$mean, after = n)  
[1]  1  2  3  4  5  6  7  8  9 10 11 12  

実データベクトル "u" の後に予測値 fcast$meanを連結します。  
実データ 1~8 の後に 9,10,11,12 がついているのがわかります。  
当たり前ですが、最初に予測した結果がきちんと付け加えられていますね。  
この結果がTableauに返ります。  
Tableauからの入力のデータ数とRからの出力数が同じですね。  

■ その2.  
実際にはデータソースにダミーレコードを追加することは難しい場合がありますので、  
次に、データソースにてを加えずに予測値を返すテクニックを紹介します。 少しテクニックが必要です。  
添付ワークブックの時系列シンプル-その2を参照ください。  

以下のようなデータソースがあります。 末尾にNULLは加えていません。

この場合に実データより先の8期間の予測値をRに計算してもらいましょう。  

1.最後のデータの日付ポイントを予測期間分先延ばしにします。  
計算式 ”Shifted Quarter" を作り、以下の計算式を入力します。  



IF [Quarter] = {FIXED:MAX([Quarter])}  
THEN  
DATEADD('quarter',[Num Forecast Intervals],[Quarter])  
ELSE  
[Quarter]  
END  

1980 Q4 のデータ 8 四半期延ばされて、1982 Q4 のデータとなります。  
この最後のデータのみ予測期間分延ばされたデータをRに渡すというところがポイントとなります。  
なぜこのようなことをしているかというと  
TableauがRに渡す実測値の入力データとRが出力する実測値+予測値のデータ数が同じになるようにしなければならないためです。


2.実測値+Rによる予測値を返す計算フィールド ”ForcastEarnings”を作成し以下を入力します。



3.列に”Shifted Quarter"、行に”Earnings" と”Forecasted Earnings" をドラッグします
4.”Shifted Quarter"を右クリックし、”Show Missing Values"を選択します ←ここがポイント



Show Missing Valuesをチェックすることで、シフトされた末尾のデータとその前のデータの間のポイントがNULLとしてRに渡され  
結果として入力と出力のデータ数が同じになります。  

ここで、実測値を84個、予測値を8個と想定して先ほど作成した計算式の中のRスクリプトを解説します。  


# 入力データの最後の一つ(84番目)のデータはシフトされて、予測データも含めた最後のデータ(92番目)にシフトされています。84番目から91番目はNULLで埋められいます。  
  l<-length(.arg1);  
# 入力データの数をlに代入します、末尾を予測データ分シフトしていますから、ここでは、84+8=92 となります。  

  u<-.arg1[1:(l-.arg2[1])];  
#  u に実データ数分 (92 - 8 =84 )の数列をベクトルとして格納します。  
(最後の一つはシフトされているので、NULLとなっている)  
  n<-length(u);  
# 実データの数は84 です。  

  u[n]=.arg1[l];  
# 実データの最後84番目のデータを92番目のデータ(シフトされたデータ)で置き換えます。  
# これでシフトされていたデータが元の場所に戻り、実データのベクトルが完成します。  

  earning_ts <- ts(u,deltat=1/4,start=c(1960,1));  
# 完成した実データベクトルu を1960 Q1 から始まる 四半期ごとの時系列データとして取り扱います。  

  fcast <- forecast(earning_ts, h=.arg2[1]);  
# 実測値データをもとにパラメータで入力された予測期間(8) の値を予測します  

  append(u,fcast$mean, after = n)"  
# 実測値データベクトル u  に予測結果 fcast$mean を追加しTableauに返します。  
ここでデータの数は実測値84 + 予測値8 =92 となります。  

ちょっと、トリッキーなところはありますね。(確かに)  
ただこのテクニックは、ほかの予測分析においても、入力データとRの出力データが異なる場合に使えるテクニックになりますので  
応用はできそうです。  

最後になりますが、Tableauには既に予測の機能が搭載されていて予測データを表示することができます。(「分析」→「予測」から実行)    
ただし、Rと連携することで時系列データから季節変動要素を分離したり、ARIMAモデル以外にも先進的な時系列予測モデルを利用した予測ができたりと、  
応用範囲はどこまでも広がると思われます。  

その際にも今回ご紹介したTableau+R連携で時系列分析を行う際の入出力のテクニックは押さえておきたいですね。  


Tableauからデータサイエンスを始めましょう!

ということで、またお会いしましょう。

bashii


参考文献  
Using R forecasting packages from Tableau  
https://boraberan.wordpress.com/2014/01/19/using-r-forecasting-packages-from-tableau/  

完成したワークブックはTableau Community にありますのでご参照ください。
https://community.tableau.com/docs/DOC-10111