==== 実験環境 ==== この実験テーマでは、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次元配列でも、行列オブジェクトは数値しか格納できず、データ・フレームは上のすべてのデータ型のフィールドが混在していても構わない。 今週は様々なデータ型のフィールドからなるひとつのデータ・フレームのみを扱う。 ==== 今週のExcel ==== データを解析する前の状況の把握にExcelを用いる。 徐々にExcelからRに切り替えていく。 ==== 今週のR ==== === まず === まずはさらっと、[[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()」とし、 グラフを描きたいオブジェクトを「data」というデータ・フレームの中の「y」というフィールド(変数)とする。 この時「関数graphでデータフレームdataの中のフィールドyのグラフを描く」には、 graph(data$y) というコマンドをRに入力し、実行させる。 グラフ描画に用いる関数には次のようなものがある。 |関数名|描くグラフ|データ・フレームの指定とモデル式の利用|データフレームの描画| |barplot|棒グラフ| | | |plot|散布図、折れ線グラフ|OK| | |hist|ヒストグラム| | | |boxplot|箱ひげ図|OK| | |pie|円グラフ| | | |mosaicplot|分割表(クロス集計)の図示| | | |pairs|散布図行列| |OK| |image|2次元配列の濃淡表示| | | |persp|2次元配列の3次元グラフ| | | |contour|2次元配列の等高線での図示| | | barplot(data$y) plot(data$y) hist(data$y) boxplot(data$y) pie(data$y) pairs(data) === 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]]はもっと情報量があるが、欲しい情報に到達するのに検索力を問われるほど、大きくなってしまっている。 ==== 今年度のテーマ === 実際のデータをPPDACサイクルに沿って解析してみる。 - まずはPPDまで - 次はPPDAまで - 最後にPPDACまで === 前説明 === PPDACとは === 本説明 === 今回のデータ。 使えないと困るものは次の3つ。 * インターネットとインターネットブラウザ * R * Excel 経営情報学実験室はインターネットに直接は接続されていない。学外のウェブサイトを利用するには、 |プロキシサーバ|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", "EZR"), dependencies = TRUE) これでうまくいく、かもしれない。