差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

mselab:2014:stat:week1:r1:prep [2014/10/21 00:16] (現在)
watalu created
行 1: 行 1:
 +==== 実験環境 ====
 +
 +この実験テーマでは、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のグラフを描く」には、
 +<code>
 +graph(data$y)
 +</code>
 +というコマンドをRに入力し、実行させる。
 +
 +グラフ描画に用いる関数には次のようなものがある。
 +
 +|関数名|描くグラフ|データ・フレームの指定とモデル式の利用|データフレームの描画|
 +|barplot|棒グラフ| | |
 +|plot|散布図、折れ線グラフ|OK| |
 +|hist|ヒストグラム| | |
 +|boxplot|箱ひげ図|OK| |
 +|pie|円グラフ| | |
 +|mosaicplot|分割表(クロス集計)の図示| | |
 +|pairs|散布図行列| |OK|
 +|image|2次元配列の濃淡表示| | |
 +|persp|2次元配列の3次元グラフ| | |
 +|contour|2次元配列の等高線での図示| | |
 +
 +<code>
 +barplot(data$y)
 +plot(data$y)
 +hist(data$y)
 +boxplot(data$y)
 +pie(data$y)
 +</code>
 +
 +<code>
 +pairs(data)
 +</code>
 +
 +=== 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台が負荷を分散しながら、全学のプロキシサーバを担っているので、それらのうちのいずれかを指定して、次のようにパッケージをインストールすることができる。
 +
 +<code>
 +Sys.setenv("http_proxy"="http://130.153.8.19:8080/")
 +install.packages(c("Rcmdr", "EZR"), dependencies = TRUE)
 +</code>
 +
 +これでうまくいく、かもしれない。
 +