第2章に従ってR AnalyticFlowをインストールし、起動します。 起動方法および初期設定については起動、初期設定および終了項を参考にしてください。
まず、分析の対象となるサンプルデータを読み込みます。
今回はRのサンプルデータから "iris" データセットを利用します。
これはアヤメの花を測定した有名なデータで、詳しくは
Fisher (1936)、およびRからhelp(iris)
を参照してください。
R AnalyticFlowでは、基本的に全ての処理をノードを作成することで記述します。 ここでは、データの読み込みを行うノードを作成しましょう。 メインウィンドウのメニューから「ノード」→「一行ノードの作成」をクリックしてください。
一行ノードは一行のRコードで表される処理を記述します。 「コード」に
data(iris)
と入力してください。
「OK」をクリックすると、フロー領域にノードが作成されます。
ノードを作成しただけでは、実際の処理は行われません。
記述した処理を実行するには、ノードを右クリックして「実行」をクリックします。
いま作成したdata
ノードを実行すると、コンソールウィンドウに以下のように表示されます:
> data(iris) >
ノードを実行すると、ノードに記述されたRコードがコンソールに送られて実行されます。
ここではdata(iris)
が既に実行され、Rが入力待ちの状態であることがわかります。
コンソールから直接Rコードを実行することも可能です。
データの中身を確認するためにhead
関数を実行するには、以下のように入力します:
エンターキーを押すと入力したコードが実行され、データの最初の数行が表示されます。 このデータには4つの量的変数(花びら、がくの幅と長さ)と1つの質的変数(Species、アヤメの品種)があることがわかりました。 このように、データのちょっとした確認などを行う場合にはコンソールからの直接入力が便利です。
コードを入力してエンターキーを押すとコードが実行されますが、 代わりにコントロールキー(Macの場合はコマンドキー)を押しながらエンターキーを押すと、 入力したコードを表す一行ノードが作成されます。 コンソール上で試行錯誤し、必要なものだけをフローとして残すことができます。
では、メインウィンドウに戻ってノードを追加しましょう。 フロー領域の空白部分をクリックすると、先ほど作成したノードは 次のように表示されているはずです。
カギ型の囲みはこのノードが最後に実行されたノードであることを示します。 これを左クリックして、次のような選択状態にします。
選択状態でノードを作成すると、選択されたノードから新たに作成されたノードに 自動的にエッジ(矢印)が引かれます。 メインウィンドウのメニューから「ノード」→「一行ノードの作成」をクリックし、 次のコードを入力してください:
plot(iris[, 1:4], col = as.integer(iris$Species) + 1)
自動的にエッジが作成され、次に示すようなフローが作成されます:
フロー上のノードを実行すると、ルートノード(最も上流のノード)から順に実行されます。
ただし、直前に実行したノード(カギ囲み)が上流にある場合、
その次のノードから順に実行されます。
いま作成したplot
ノードを右クリックして実行してみましょう。
グラフィックウィンドウに以下のような図が表示されます:
4つの量的変数の散布図が描かれました。 データ点の色はSpeciesを表しており、量的変数をうまく使えば アヤメの品種を判別できそうなことがわかります。
このときコンソールウィンドウを見てみると、
先ほど実行したhead
関数に続いて
plot
関数だけが実行されていることがわかります。
> data(iris) > head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa > plot(iris[, 1:4], col = as.integer(iris$Species) + 1) >
これは、フロー上では上流にあるdata
関数が
すでに実行されているため、改めて実行する必要はないと考えられるためです。
フローをルートノードから改めて実行したいときには
「実行」の代わりに「クリアして実行」を選択してください。
Rワークスペース上のオブジェクトを全てクリアし、ルートノードから
実行したノードまでの全てのノードが順に実行されます。
先ほどの散布図から、Species(アヤメの品種)によって Petal.Length(花びらの長さ)が大きく異なることが見て取れます。
この関係をより詳しく調べるために、箱ひげ図を作成してみましょう。
plot
ノードが選択されていることを確認して、
以下のコードを表す一行ノードを作成してください:
boxplot(Petal.Width ~ Species, data = iris, col = 3, main = "Petal.Width")
すると以下のようなフローが作成されます:
ここでboxplot
ノードはplot
ノードの下流にあるため、
boxplot
を実行する際には必ずplot
が実行されることになります。
探索的分析の順序としてはそれで構いませんが、後で結果を再確認する際には
特にこの順序に従う必要はありません。
そこで、boxplot
ノードがplot
と同じく、
data
の直後に来るようにエッジを付け替えます。
これにはいくつかの方法がありますが、最も簡単な方法は
data
からboxplot
に直接エッジを作成する方法です。
まず、エッジの元となるdata
ノードをクリックして
選択状態にします:
この状態で、エッジの先となるboxplot
ノードを
中クリック、またはAltキーを押しながらクリックします:
これで新たにエッジが作成され、既存のエッジが置き換えられました。
このままでは見づらいので、boxplot
ノードをドラッグして
見やすい位置に配置します:
これでエッジの操作は完了です。
最後に実行されたplot
ノードはboxplot
ノードの
上流にはないため、boxplot
を実行するとdata
から
順に実行されます。