• 検索結果がありません。

同 R and RExcel ソフトウェア品質技術者のための「データ分析勉強会」

N/A
N/A
Protected

Academic year: 2018

シェア "同 R and RExcel ソフトウェア品質技術者のための「データ分析勉強会」"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

1. はじめに

 RExcel シリーズ第 3 回では、Excel のシート 上で R の関数(以下、R 関数)を利用する方法 について紹介します。

 RExcel を導入することで、Excel に標準で設 定されているワークシート関数(以下、Excel 関数)と同様に、R 関数を Excel で利用する ことが可能となります。第 1 の方法は、Excel のセルに R 関数を記述し、ショートカットメ ニューを使って R に転送・実行させたり、計 算結果をセルに転送させたりするというもの です。第 2 の方法は、関数 RApply 等を使って Excel 関数のように R 関数を利用するというも のです。

 今回は R コマンダーを立ち上げない状態で Excel を利用しています。R コマンダーを起動 している場合、後述のショートカットメニュー に現れる機能が少し多くなります。

2. ショートカットメニューによるR

関数の利用

⑴ 基本操作

 ショートカットメニューに現れる RExcel の 機能を使うことで、Excel のセルに入力した R 関数やデータを R に転送し、計算結果を R から Excel のセルに転送させることができま す。ショートカットメニューは、任意のセルを 選択して右クリックすることで現れます(図 1)。R のコードを実行するには「Run code」、 数値や行列など(データフレーム)を Excel か ら R へ 転 送 す る に は「Put R Var」(「Put R DataFrame」)、 逆

に そ れ ら を R か ら Excel へ 転 送 す る に は「Get R Value」(「Get R DataFrame」)を 利用します。

(独)農業・食品産業技術総合研究機構

農村工学研究所農村計画部主任研究員

合崎 英男

(Aizaki Hideo)

■2000 年 3 月北海道大学大学院農学研究科博士後期課程修了。博 士(農学)。農林水産省農業研究センター研究員、農業工学研究所 研究員、同主任研究官を経て、06 年 4 月より現職。専門分野は農 業経済学(主に環境配慮や食品安全性に関する意思決定分析)。

[連載]フリーソフトによるデータ解析・マイニング

 第87回

(2)

⑵ R のコードの実行

 √2 の値を R で計算させ(関数 sqrt が該当)、 その結果を R から Excel に転送させてみましょ う(図 2)。R での計算結果を変数 v1 に保存す るとして、セル A1 に「v1<-sqrt(2)」と入 力して[Enter]キーを押します(以下、「[Enter] キーを押す」は省略)。次に、そのセルを選択 して右クリックし、表示されたメニューから 「Run code」を選択します。これで指定した コードが R で実行されます。そして、別のセ ル A2 を選択して右クリックし、「Get R Value」

を実行します。別画面が開くので(図 3)、計 算結果を保存している変数 v1 の値をコピーす るように指示すると(R expression のボックス に「v1」を入力し、[OK]ボタンを押します)、 セル A2 に計算結果が返されます(セルの幅等 によって、表示される桁数は異なります)。  上記の例では、実行した R のコードは 1 セ ル(1 行)分でしたが、複数のセルに入力した コードを一度に実行することも可能です(図 2)。たとえば、乱数の種を「123」に設定し (関数 set.seed が該当)、一様乱数を 1 つ生成 させてみましょう(関数 runif が該当)。セル A4 に「set.seed(123)」、セル A5 に「 v2<-runif(1)」とそれぞれ入力します。次に、セ ル A4 から A5 の範囲を選択して右クリックし、 「Run code」を実行します。そして、セル A6

を選択して右クリックから「Get R Value」を 実行して変数 v2 を指定すると、保存されてい た結果がセル A6 に返されます。

⑶ R へのデータの転送

 R 関数を含んだコードの実行方法と同様な手 図 2 ショートカットメニューによる R 関数の利用

(3)

順で、Excel のセルに入力したデータを、R に 転送できます。データの種類によって「Put R Var」か「Put R DataFrame」を用います。デー タフレームの転送方法は、RExcel シリーズ第 1 回(2010 年 8 月号)で紹介済みですので、今 回は数値と行列の転送方法を紹介します。  たとえば、セル A8 から C10 の範囲のセルに、 図 2 の通りに数値を入力したとします。ここで、 1 つの数値のみを選択して右クリックし、「Put R Var」を選択すれば、その値を R に転送でき ます。仮に、セル A8 を選択して「Put R Var」 を実行すると、別画面(図 4)が開きますので、 Array name in R のボックスに「v3」と入力し、 [OK]ボタンを押します。これでセル A8 に入

力されていた「2」という数値を R に転送(「v3 に保存)することができました。データの転送 を確認するため、セル A12 を選択して右クリッ クから「Get R Value」を実行して「v3」を指 定すると、先ほど保存した値がそのセルに返さ れます。

 次に、図 2 のセル A8 から C10 の範囲すべて を選択して右クリックから「Put R Var」を実 行し、R に行列として転送します(行列名は m1」とします)。転送後、試しにセル A14 に その行列を使った行列積を求めるコード「

m2<-m1%*%m1」を入力し、「Run code」を実行して みます。そして、セル A15 を選択して右クリッ クから「Get R Value」を実行し、「m2」を指定 して[OK]ボタンを押せば、そのセルを左上 端とした範囲に計算結果(行列)が転送されま す。

3. 関数RApplyによるR関数の利用

⑴ 基本書式

 R 関数を Excel のシート上で利用する 2 つめ の方法は、RExcel をインストールすることで 新たに導入された関数 RApply を利用する方法 です。関数 RApply の書式は、

  =RApply(R 関数 , 引数 )

です。Excel 関数と同様に、関数名の前に半角 のイコールを入れ、関数名のあとの半角の両括 弧内に引数を指定します。関数 RApply の引数 は「R 関数」と「引数」の 2 種類です。「R 関 数」部分には、使用したい R 関数を指定します。 「引数」部分には、指定した R 関数で用いる引

数を指定します。

 関数 RApply と同じ機能を持ちますが、R か らの計算結果が Excel のシートに返されない点 が異なる関数 RCall もあります。この関数の書 式も関数 RApply と同じです。

⑵ 数式の計算

(4)

のダブルクォーテーションで囲み、「引数」は 数値を直接入力します。たとえば、セル A22 に「=RApply(“sqrt”, 2)」と入力すれば、先 ほどと同じ結果が返されます。

 関数 RApply の「R 関数」部分には、利用者 が独自に設定した関数を指定することもできま す。たとえば、「引数」で与えられた値の 2 乗 を求める関数は、

  

あるいは   

と表現できます。前者の 1 行で関数を表現した ものをセル A24 に入力します。後者の 3 行で

function(x)x*x

function(x){ x*x

}

関数を表現したものについては、1 行目部分を セル A25、2 行目部分をセル A26、3 行目部分 をセル A27 にそれぞれ入力します。これらの 関数で 32の値を求めるとします。セル A28 に

3」を入力します。次に、前者の 1 行表示の 関数を利用するときには、その関数を記述して いるセルを関数 RApply の「R 関数」部分で指 定します。ここではセルA29に「=RApply(A24, A28)」と入力すれば、32の値である「9」が 返されます。他方、後者の複数行表示の関数を 利用するときには、該当するセル範囲を関数 RApply の「R 関数」部分で指定します。セル A30 に「=RApply(A25:A27, A28)」 と 入 力 すれば、同じ計算結果が返されます。

 セル範囲に名前を付けて、その名前を「R 関 数」部分で指定することもできます。たとえば、

フリーソフトによるデータ解析・マイニング

(5)

セル A25 から A27 の範囲を選択して右クリッ クから「Name range」を選びます。別画面(図 6) が開きますので、選択した範囲の名前を「myf1 と入力して[OK]ボタンを押します。そして、 セル A31 に「=RApply(myf1, A28)」と入力 すれば、計算結果が返されます(「引数」にも 名前の設定を活用できます)。

 関数 RApply の「引数」では、関数 AsRExpr と関数 AsSimpleDF が使えます。関数 AsRExpr は、関数 RApply の「引数」に R 表現式を用い るときに使います。たとえば、log2 の値を 10 倍する計算を考えてみます。値を 10 倍するコー ド(function(x)x*10) を 図 5 の セ ル A33 に、log2 を計算するコード(log(2))をセル A34 にそれぞれ入力します。そして、セル A35 に「=RApply(A33, AsRExpr(A34))」と入 力すると、計算結果が返されます。

 関数 AsSimpleDF は、指定された範囲をデー タフレームとして、関数 RApply の「引数」に 用いることができます。複数の変数を含んだ データセットを準備し、「R 関数」で変数名を 利用することができます。たとえば、変数 x と y を、変数名を含めてセル A37 から B43 の範 囲に入力します(図 5)。ここで変数 x と y の 相関を R 関数(関数 cor が該当)で求めてみま す。セル A45 に次のように入力すると、

  

両変数の相関係数が返されます。

⑶ 行列の計算

 R 関数を用いた行列計算の一例として、ある 行列の転置行列を作成してみましょう(関数 t が該当)。転置行列のもととなる行列には、変 数 x と y として入力した各 6 つの数値全体を 6 行 2 列の行列と見なして利用します(変数名 部分は除外)。6 行 2 列の行列の転置行列は 2 行 6 列となりますので、ここではセル A47 か ら F48 の範囲を選択します(図 7)。そして、 =RApply(“t”, A38:B43)」を入力して[Ctrl]

+[Shift]+[Enter]キーを押すと(Excel で いうところの配列数式として入力)、もとの行 列の転置行列が出力されます。

⑷ 作図

 R 関数の作図機能の一例として、変数 x と y の散布図を描いてみましょう(関数 plot が該当)。 RExcel に含まれる関数 RCall を使って、セル A50 に「=RCall(“plot”, AsSimpleDF(A37:B43)) と入力すると(図 7)、別画面に変数 x と y の散布 図が表示されます(出力は省略)。関数 RCall を利 用していますので、関数を入力したセルには関数 plot を実行したことが表示されます。

 ちなみに、出力した図は、Excel の任意のセ ル上で右クリックして「Insert Current R Plot」 (関数 plot を実行したときにメニューに現れま

す)を選択することで、Excel のシート上にコ ピーできます。

=RApply(“function(mydf)with (mydf, cor(x, y))”,

(6)

⑸ 統計モデル分析

 最後の例として、統計モデル分析を取り上げ ます。ここでは、セル A37 から B43 の範囲に 入力した変数 x と y を使って、回帰分析を行う とします(関数 lm が該当)。変数 y を目的変数、 変数 x を説明変数として、切片も含めたモデル を想定します。回帰分析をはじめとした統計モ デル分析の結果にはさまざまな情報が含まれま すが、ここでは変数名、係数推定値(Estimate)、 標準誤差(Std. Error)、t 値(t value)、そして p 値(Pr(>│t│))を R から Excel のシート上に 転送させます(図 7)。

 関数 lm の実行結果から係数推定値等の値を Excel に転送させるには、セル B53 から E54 の 範囲を選択した上で、

  

を入力、[Ctrl]+[Shift]+[Enter]キーを 押します。係数推定値等の項目名を Excel に転 送させるには、セル B52 から E52 の範囲を選 択した上で、

=RApply(“function(mydf) coef(summary(lm(y~x, data=mydf)))”,

AsSimpleDF(A37:B43))

  

を入力、[Ctrl]+[Shift]+[Enter]キーを 押します。切片と説明変数(x)を Excel に転 送させるには、セル A53 から A54 の範囲を選 択した上で、

  

を入力、[Ctrl]+[Shift]+[Enter]キーを 押します。

4. おわりに

 Excel のツールバーの「RExcel」→「Demo Worksheets」へ進むと、デモ用シートが準備さ れています。今回は紹介できなかった関数や機 能も含まれています。また、開発者ら(statconn) の Web サイト(http://rcom.univie.ac.at/)にも 情報があります。関心のある方は必要に応じて、 これらも参照してください。

=RApply(“function(mydf) t(colnames(coef(summary (lm(y~x, data=mydf)))))”, AsSimpleDF(A37:B43))

=RApply(“function (mydf) rownames(coef(summary (lm(y~x, data=mydf))))”, AsSimpleDF(A37:B43))

フリーソフトによるデータ解析・マイニング

図 4 Excel から R へのデータの転送(PutRVar)
図 5 関数 RApply による R 関数の利用 (1)

参照

関連したドキュメント

(質問者 1) 同じく視覚の問題ですけど我々は脳の約 3 分の 1

注:一般品についての機種型名は、その部品が最初に使用された機種型名を示します。

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます

太宰治は誰でも楽しめることを保証すると同時に、自分の文学の追求を放棄していませ

大阪府では、これまで大切にしてきた、子ども一人ひとりが違いを認め合いそれぞれの力

・カメラには、日付 / 時刻などの設定を保持するためのリチ ウム充電池が内蔵されています。カメラにバッテリーを入

LUNA 上に図、表、数式などを含んだ問題と回答を LUNA の画面上に同一で表示する機能の必要性 などについての意見があった。そのため、 LUNA

40m 土地の形質の変更をしようとす る場所の位置を明確にするた め、必要に応じて距離を記入し