25.Using the R Tool for Plotting Data(データをプロットするためのRツールの使用) | Alteryx Predictive Tools 道場 Advent Calendar 2018 #25

はじめに

データ加工・準備・分析からレポート作成までをワンストップで提供するデータ分析プラットフォーム「Alteryx」には250種類を超えるツールと様々なサンプルワークフローが提供されています。

今回はそのなかでも興味はあるものの、何をやっているのか理解し難いサンプルとして定評のある「Predictve Alanysis(予測分析)」のサンプルワークフロー25種を弊社データインテグレーション(DI)部のメンバーが、アドベントカレンダー形式で順番に紹介しています。

それが今回実施している『Alteyx Predictive Tools 道場 Advent Calendar』です。

当エントリはいよいよ最終回、25日目、Using the R Tool for Plotting Data(データをプロットするためのRツールの使用) を紹介します。

実行環境とサンプル起動

本エントリには、以下の環境を使用しています。

  • macOS Mojave バージョン10.14.2
  • VMware Fusion 10.1.5
  • Windows 10 Pro バージョン1803
  • Alteryx Designer 2018.4 Admin Version 日本語インストール + Alteryx Predictive Tools

Alteryx Designerを起動して、 メニューから Help > Sample Workflows > Predictive Analysis > 25 Using the R Tool for Plotting Data を選択します。 Predictive Analysisのサンプルがない場合は、Windowsのアプリと起動メニューから、Alteryx Predictive Toolsのインストールが正しく完了できているかを確認してください。

サンプル概要

今更触れるまでもないと思いますが、念の為R(R言語)について。Rは統計計算とグラフィックスのためのフリーソフトウェア環境です。WindowsおよびMacOSの幅広いUNIXプラットフォーム上でコンパイルおよび実行されます。

本サンプルを含めた予測分析系のツール(マクロ)は、このR上で動作するので、Alteryx本体に加えて、Rの実行環境(Alteryx Predictive Tools with R)がインストールされている必要があります。

サンプルのフローは非常にシンプルです。County Density(アメリカ合衆国の郡統計)入力ファイルを使用して既存のR環境に取り込み、データをグラフィカルに出力します。

このサンプルでは以下のツールを使います。

  • Input(データ入力)
  • R Tool(Rツール)
  • Browse(閲覧)
  • Render(レンダリング)

Input(データ入力)

Use the County Density database for a data sample to graph using the R code.

Rコードを使用してグラフ化する為に、County Density(アメリカ合衆国の郡統計)データベースをデータサンプルとして使用します。

カラム名 説明
Name 郡の名前
Key キー(州コード2桁+郡コード3桁)
POP1990 人口(1990年)
POP2000 人口(2000年)
POP2005 人口(2005年)
AreaSqMi 広さ(平方マイル)
POP2010 人口(2010年)
DEN90 人口密度(1990年)
DEN00 人口密度(2000年)
DEN05 人口密度(2005年)
DEN10 人口密度(2010年)

R Tool(Rツール)

Rツールでは、ワイヤで接続された直前のツールの出力を受け取ったり、R言語の機能を使ったグラフ描画やデータ処理ができます。

本サンプルでは、大きく3つの内容に分かれており、よく見るとグラフ描画に関しては入力データを全く使っていないことがわかります…。

  • 1〜45行目: 3次元グラフの描画
  • 47〜50行目: 円グラフの描画
  • 52〜54行目: 入力データの編集、出力
AlteryxGraph(2, width=2400, height=3000, res=300)
#Insert code to plot graph here

mu1<-0 # setting the expected value of x1
mu2<-0 # setting the expected value of x2
s11<-10 # setting the variance of x1
s12<-15 # setting the covariance between x1 and x2
s22<-10 # setting the variance of x2
rho<-0.5 # setting the correlation coefficient between x1 and x2
x1<-seq(-10,10,length=41) # generating the vector series x1
x2<-x1 # copying x1 to x2
#
f<-function(x1,x2){
        term1 <- 1/(2*pi*sqrt(s11*s22*(1-rho^2)))
        term2 <- -1/(2*(1-rho^2))
        term3 <- (x1-mu1)^2/s11
        term4 <- (x2-mu2)^2/s22
        term5 <- -2*rho*((x1-mu1)*(x2-mu2))/(sqrt(s11)*sqrt(s22))
        term1*exp(term2*(term3+term4-term5))
} # setting up the function of the multivariate normal density
#
z<-outer(x1,x2,f) # calculating the density values
#
persp(x1, x2, z,
      main="Two dimensional Normal Distribution",
      sub=expression(italic(f)~(bold(x))==frac(1,2~pi~sqrt(sigma[11]~
                     sigma[22]~(1-rho^2)))~phantom(0)~exp~bgroup("{",
                     list(-frac(1,2(1-rho^2)),
                     bgroup("[", frac((x[1]~-~mu[1])^2, sigma[11])~-~2~rho~frac(x[1]~-~mu[1],
                     sqrt(sigma[11]))~ frac(x[2]~-~mu[2],sqrt(sigma[22]))~+~
                     frac((x[2]~-~mu[2])^2, sigma[22]),"]")),"}")),
      col="lightgreen",
      theta=30, phi=20,
      r=50,
      d=0.1,
      expand=0.5,
      ltheta=90, lphi=180,
      shade=0.75,
      ticktype="detailed",
      nticks=5) # produces the 3-D plot
# adding a text line to the graph
mtext(expression(list(mu[1]==0,mu[2]==0,sigma[11]==10,sigma[22]==10,sigma[12]==15,rho==0.5)), side=3)


invisible(dev.off())

AlteryxGraph(2, width=576, height=576)
#Insert code to plot graph here
pie(c(0.12, 0.3, 0.26), col = c("purple","violetred1","green3"))
invisible(dev.off())

allocate_Input <- read.Alteryx("#1")
allocate_Input[,4]<-allocate_Input[,3]/2
write.Alteryx(allocate_Input)
  • 1〜45行目: 3次元グラフの描画

persp()関数を使用して多変量正規分布の3次元グラフを表示しています。各パラメーターはコードの中に直書きされています。

  • 47〜50行目: 円グラフの描画

pie()関数を使用して、3要素の比率を円グラフとして表示しています。3要素の大きはpie()関数の中にc(0.12, 0.3, 0.26)として直書きされています。

  • 52〜54行目: 入力データの編集、出力

ツールの出力をRツールへ接続すると、それぞれ#1, #2のように番号が付けられます(名前はワイヤをクリックして表示される編集画面から編集可能です)。この値をread.Alteryx()関数で読み込み、コードの中で加工することが可能です。

サンプル53行目で、取り込んだデータの4列目(POP2000)を、3列目(POP1990)の半分の値にするという処理を行っているようです。

Browse(閲覧)

実行後、閲覧ツールをクリックし、結果を確認すると、Rツールで設定した通り、POP2000列の値がPOP1990列の半分の値に設定されていることがわかります。

Render(レンダリング)

Rツールでは、描画設定をしたグラフをツールの2番に出力するよう設定しています。描画データをPDF出力するために、Rツールの2番にレンダリングツールをワイヤ接続します。出力モードの中から、Temporary PDF Formatを選択します。

実行後、結果ウィンドウに出力PDFファイル名が表示されます。

ファイル名をクリックすると、PDFファイルが展開され、出力設定を行った2つのグラフが記載されていることが確認できます。

さいごに

『Alteyx Predictive Tools 道場 Advent Calendar』、今回Using the R Tool for Plotting Data(データをプロットするためのRツールの使用)のサンプルについてご紹介しました。

さて、25回にわたってAlteryxの予測系サンプルを紹介してきましたがいかがだったでしょうか。私達もこれらサンプルの操作とブログ執筆を通して、予測分析ツールの使い方に関し、多くの知識を得ることができました。みなさんも本シリーズのエントリを見返したり、あるいは実際にサンプルを触ってみて、Alteryxは単なるデータ加工ツールではない、データ分析の為に非常に高度な機能を提供してくれるということを体験して頂ければ何よりと考えています。それではまた、次のエントリでお会いしましょう。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400