==== 実験環境 ====
この実験テーマでは、RとExcelを使う。
=== R ===
「統計工学」では[[http://www.r-project.org/|R]]という言語をデータ解析用の環境として用いる。Rは言うなれば、データ解析用の電卓である。次のような特徴があり、理系における統計教育用の環境に適している。
* 短いコマンドで様々な集計ができる
* 簡単にグラフが描ける
* コマンド入力に不自由を感じる人は、数値や集計結果をExcelに持って行くことができる。
* 無料なので自分のコンピュータにインストールできて、いつでもどこでも、作業のやり直しや追加ができる(実施に場所と時間を選ばないは結構大事)
* コンパイル不要のプログラミング言語(インタプリタ環境)
多少のコマンドを打つ必要があるが、多くのことは紹介したコマンドのバリエーション(変数名を変える程度)で済むので、慣れてくれるといいと思う。
=== Rのデータ格納 ===
Rのデータ型は基本的には次の通りである。
* 文字列(characters): "abcdefg"
* 論理(logical): TRUE/FALSE
* 数値(numeric): 1.53
* 因子(factor)
またそれらのデータ型を格納するためのオブジェクトには、次元に応じては幾つかの種類がある。
* スカラー変数(scalar):0次元配列
* ベクトル(vector):1次元配列
* 行列(matrix):2次元配列
* 配列(array):一般の配列(3次元以上も可)
* リスト(list):複数のオブジェクトを格納できるオブジェクト
* データ・フレーム(data.frame):多くの関数で採用されているフィールドごとのレコード数が共通の2次元配列
同じ2次元配列でも、行列オブジェクトは数値しか格納できず、データ・フレームは上のすべてのデータ型のフィールドが混在していても構わない。
今週は様々なデータ型のフィールドからなるひとつのデータ・フレームのみを扱う。
=== まず ===
まずはさらっと、[[http://fk-plaza.jp|このウェブサイト]]の
* [[http://fk-plaza.jp/Solution/solu_qc7_6.htm|グラフ]]
* [[http://fk-plaza.jp/Solution/solu_qc7_4.htm|散布図]]
* [[http://fk-plaza.jp/Solution/solu_qc7_3.htm|ヒストグラム]]
* [[http://fk-plaza.jp/Solution/solu_qc7_7.htm|層別]]
に目を通すこと。それぞれをRで実行する関数を、次で説明する。
=== Rでグラフを描く ===
Rでは様々なグラフを描くことができる。グラフ描画に用いる関数を例えば「graph()」とし、
グラフを描きたいオブジェクトを「bank」というデータ・フレームの中の「balance」というフィールド(変数)とする。
この時「関数graphでデータフレームbankの中のフィールドbalanceのグラフを描く」には、
graph(bank$balance)
というコマンドをRに入力し、実行させる。
グラフ描画に用いる関数には次のようなものがある。
|関数名|描くグラフ|データ・フレームの指定とモデル式の利用|データフレームの描画|
|barplot|棒グラフ| | |
|plot|散布図、折れ線グラフ|OK| |
|hist|ヒストグラム| | |
|boxplot|箱ひげ図|OK| |
|pie|円グラフ| | |
|mosaicplot|分割表(クロス集計)の図示| | |
|pairs|散布図行列| |OK|
|image|2次元配列の濃淡表示| | |
|persp|2次元配列の3次元グラフ| | |
|contour|2次元配列の等高線での図示| | |
例えば、次のようなコマンドを順に実行すると、グラフの例を作れる。
barplot(bank$y)
plot(bank$balance)
hist(bank$balance)
boxplot(bank$balance)
pie(bank$y)
こんなグラフもある。
pairs(bank)
=== Rで集計する ===
各フィールドの集計方法は、フィールドのデータ型によって異なる。
|関数|できること|得意なデータ型|苦手なデータ型|メモ|
|mean|平均の計算|数値|文字、因子、論理|変換してから平均を計算させることもできる|
|var|分散の計算|数値|文字、因子、論理|変換してから分散を計算させることもできる|
|sqrt|平方根の計算|数値|文字、因子、論理|分散の平方根は標準偏差|
|summary|四分位(小さい方から25%、50%、75%の値)、最大最小、平均|なんでも|
フィールドの組み合わせは、連続な数値どうしなら散布図を用いるのがいい。
離散の数値(とびとびの値しかとらない)や因子、少ないバリエーションの文字列のみなら、table関数を用いると、クロス集計をしてくれる。
|関数|できること|得意なデータ型|苦手なデータ型|メモ|
|cov|共分散の計算|数値|文字列、因子、論理| |
|cor|相関係数の計算|数値|文字列、因子、論理| |
|table|クロス集計|数値(離散)、文字列、論理、因子|数値(連続)| |
=== 今週用いる関数 ===
今週は、
* summary
* boxplot
* hist
* plot
* table
などの関数を用いて、問題に取り組む準備をする。困ったら、[[http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html|竹澤先生のメモ]]の中の
* [[http://cse.naro.affrc.go.jp/takezawa/r-tips/r/50.html|高水準作図関数]]
や、[[http://www.f.waseda.jp/sakas/|逆瀬川先生]]の[[http://www.f.waseda.jp/sakas/lecture/toolbox/R/index.html|Rのページ]]の中の
* [[http://www.f.waseda.jp/sakas/sakalab/semi.R/Rgraphics.html|Rのグラフィックス]]
や、[[http://stat.biopapyrus.net/|バイオスタティスティックス]]の
* [[http://stat.biopapyrus.net/graph/lines.html|折れ線]]
* [[http://stat.biopapyrus.net/graph/hist.html|ヒストグラム]]
* [[http://stat.biopapyrus.net/graph/barplot.html|棒グラフ]]
* [[http://stat.biopapyrus.net/graph/pie.html|円グラフ]]
* [[http://stat.biopapyrus.net/graph/boxplot.html|箱ひげ図]](ボックスプロット)
* [[http://stat.biopapyrus.net/graph/scattergram.html|散布図]]
などを参照するといい。
[[http://www.okada.jp.org/RWiki/|RjpWiki]]はもっと情報量があるが、欲しい情報に到達するのに検索力を問われるほど、大きくなってしまっている。
=== Rのプロキシの設定 ===
経営情報学実験室はインターネットに直接は接続されていない。学外のウェブサイトを利用するには、
|プロキシサーバ|130.153.8.16, 130.153.8.17, 130.153.8.18, 130.153.8.19のいずれか|
|ポート|8080|
|ユーザ認証|なし|
|プロキシを経由せず直接に接続する先(Firefox)|130.153.0.0/16, 172.21.0.0/16, 182.168.0.0/16, 127.0.0.1/8, localhost|
をブラウザに教える必要がある。
Rはインストール済みだが、自宅では[[http://www.r-project.org/|R Project]]もしくは[[http://cran.ism.ac.jp/|近所のミラーサイト]]からダウンロードしてインストールできる。Excelは別に、Microsoft Office OnlineでもGoogle DriveでもApple iWork Onlineでも構わない。
Rに加えて、使えると便利なものは次の3つのいずれか、または全て。少なくともRコマンダーかEZRは、Rに慣れないうちはかなり便利に感じるはずで、それらがあれば実験に必要な作業は、マウスやメニューの操作でかなり進めることができる。
* [[http://www.rstudio.com/|RStudio]]はR専用のIDEで、Matlabのようなインタフェースを持っている。RStudioはRと通信しながら動作する。
* [[http://www.rcommander.com/index.php|R Commander]]はRの機能をメニューで提供する、Rの上で動作するパッケージ。[[http://www.ec.kansai-u.ac.jp/user/arakit/|荒木先生]]が日本語化をされていて、[[http://www.ec.kansai-u.ac.jp/user/arakit/documents/Getting-Started-with-the-Rcmdr-ja20140902.pdf|Rコマンダー入門の翻訳]]もされている。([[http://www1.doshisha.ac.jp/~mjin/|金先生]]の[[http://www1.doshisha.ac.jp/~mjin/R/38/38.html|Rコマンダーの解説]]、[[|http://monge.tec.fukuoka-u.ac.jp/r_analysis/0r_analysis.html|梶山先生]]の[[http://monge.tec.fukuoka-u.ac.jp/r_analysis/rcmdr_installation_00.html|Rコマンダー「Rcmdr パッケージ」の追加インストール]]、[[http://www.okada.jp.org/RWiki/|RjpWiki]]の[[http://www.okada.jp.org/RWiki/?Rcmdr%A4%CE%B5%A1%C7%BD|Rcmdrの機能]]、[[http://plaza.umin.ac.jp/~takeshou/|竹内先生]]の[[http://plaza.umin.ac.jp/~takeshou/R/Rcmdrfirst.html|Rコマンダーの使い方]]、[[http://www.josai.ac.jp/~nagasima/|長島先生]]の[[http://www.josai.ac.jp/~nagasima/contents/doc/rcmdr/100105presen.pdf|Rコマンダーを用いた統計解析]]などが参考になる)
* [[http://www.jichi.ac.jp/saitama-sct/SaitamaHP.files/statmed.html|EZR]]もRの機能をメニューで提供する、Rで動作するパッケージ。
開発が進行中のソフトウェアの宿命で、Rのバージョンが変わったり、それぞれが依存しているパッケージのバージョンが変わったりすると、それに応じて挙動が変わることがある。こちらですべてのパッケージのバージョンの組み合わせをサポートするのは困難なので、紹介だけに留める。([[http://crayon.inf.uec.ac.jp/doku.php?id=r:how_to:r_commander|以前に、日本語化されたRコマンダーを用いていた]]が、R本体や依存するパッケージのためにうまく日本語が表示されないなどのトラブルがあった。)
Rに追加パッケージをインストールするには、[[http://crayon.inf.uec.ac.jp/doku.php?id=r:how_to:internet_proxy|このページ]]を参考に、Rにプロキシを教える必要がある場合もある。
この大学では130.153.8.16, 130.153.8.17, 130.153.8.18, 130.153.8.19の4台が負荷を分散しながら、全学のプロキシサーバを担っているので、それらのうちのいずれかを指定して、次のようにパッケージをインストールすることができる。
Sys.setenv("http_proxy"="http://130.153.8.19:8080/")
install.packages(c("Rcmdr", "RcmdrPlugin.EZR"), dependencies = TRUE)
これでうまくいく、かもしれない。
=== RのグラフをWordに貼るには ===
右クリックでコピーして、WordやExcelやPowerPointに貼れる。