22
統計解析ソフト R による 「ミクロデータ分析の基礎」 平成 29 年度(2017 年) Ⅰ. 基礎編 作成: 和田かず美・河野真理子 協力: 床裕佳子・坂下佳一郎・田中隆・飯島信也・松本正博

Ⅰ. Rの基礎 2017

Embed Size (px)

Citation preview

Page 1: Ⅰ. Rの基礎 2017

統計解析ソフト R による

「ミクロデータ分析の基礎」

平成 29 年度(2017 年)

Ⅰ. 基礎編

作成: 和田かず美・河野真理子

協力: 床裕佳子・坂下佳一郎・田中隆・飯島信也・松本正博

Page 2: Ⅰ. Rの基礎 2017

目次

1.研修の目的 ...........................................................................................1

2.統計解析ソフト R について .......................................................................1

3.なぜ R を使うのか ..................................................................................1

4.R のインストール ...................................................................................2

5.R の起動と終了 ......................................................................................8

[演習 1] 電卓代わりに使ってみよう ............................................................9

6.変数の作り方.........................................................................................9

[演習 2] 変数に値を入れてみよう ............................................................. 10

7.データの型 ......................................................................................... 10

[演習 3] 様々なデータ型の変数を作ってみよう ............................................ 11

[演習 4] 様々なデータ型で計算をしてみよう ............................................... 11

8.データの構造....................................................................................... 12

[演習 5] 様々な構造のデータを作って眺めてみよう ....................................... 13

9.因子(factor)属性について ................................................................... 14

[演習 6] 因子属性のデータを作って眺めてみよう.......................................... 14

10.パッケージのインストールと使用方法 ...................................................... 15

[演習 7] epade パッケージを使ってみよう ................................................ 17

Page 3: Ⅰ. Rの基礎 2017

I-1

1.研修の目的

簡単なミクロデータ分析の演習を通じて、統計解析ソフト R の使い方を学習する。こ

の、基礎編では、R の起動や終了、様々な変数など、分析を行うために必要な事項を収録

した。

2.統計解析ソフト R について

統計計算とグラフィックのためのフリーソフトウェアだが、著作権は放棄されていな

い(コピーレフト)

特定の営利企業が開発をしているわけではなく、世界中の多くの開発者が参加するコ

ミュニティで開発されている

公式サイトは CRAN (The Comprehensive R Archive Network)

https://cran.r-project.org/ (英語)

日本語のコミュニティサイトは、Rjpwiki

http://www.okadajp.org/RWiki/?RjpWiki

ユーザはこれを実行し、複製し、修正し、再配布できるが、その再配布物のライセン

スに制限を加えることはできない

ライセンス:GNU GPL(General Public License:一般公衆利用許諾契約書)

http://www.opensource.jp/gpl/gpl.ja.html (和訳)

3.なぜ R を使うのか

利用にあたり費用がかからず、OS(Windows/Mac/Linux)も選ばないので、導入し

やすい

巨大なユーザーコミュニティと膨大なライブラリ群を活用できる。たいていの統計手

法は誰かがライブラリを作って公開し、さらに誰かがそれを使ってその方法をどこか

に書いている

☆ フリーソフトウェアは、ソースコードが公開され、実行、改変や再配布を行う

ことがライセンスにより許可されている。

☆ フリーソフトウェアとは、自由に利用できるソフトウェア

Page 4: Ⅰ. Rの基礎 2017

I-2

カスタマイズしやすい美しいグラフィック機能を持つ

4.R のインストール

① ソフトウェアが置かれている場所について

以下の公式サイトには、アクセスが集中しないよう、世界各地にミラーサイトがあり、

2017 年 6 月現在、日本のミラーサイトは統計数理研究所にある。公式サイトや別の国に

あるどのミラーサイトを選んでも問題はないが、混雑していなさそうなサイトや自分が

いる場所に近いサイトを選ぶとダウンロードが早い。

The R Project.org https://www.r-project.org/index.html

日本のミラーサイト https://cran.ism.ac.jp/index.html(統計数理研究所)

② ミラーサイトにある、Linux, (Mac) OS X, Windows の中から、インストール先の PC

の OS を選ぶ。

画面 4.1:

③ ここでは、Windows の場合について説明する。画面 4.1 で、矢印の左にある囲みの中

の「Download R for Windows」を選択する。

④ 画面 4.2 が表示されるので、矢印の左にある囲みの中から、「base」あるいは「install

R for the first time」を選択する(どちらを選んでも次に選択される画面は同じ)。

⑤ 画面 4.3 から、囲みの「Download R 3.4.0 for Windows」を選ぶと、インストール

Page 5: Ⅰ. Rの基礎 2017

I-3

用ファイル R-3.4.0-win.exe がダウンロードされるので、任意の場所に保存する。バ

ージョン番号とダウンロードされるソフトウェアは、公開されている最新のもので、

2017 年 6 月現在のバージョンは 3.4.0、コードネームは”You Stupid Darkness”。

画面 4.2:

画面 4.3:

Page 6: Ⅰ. Rの基礎 2017

I-4

⑥ 保存した R-3.4.0-win.exe をダブルクリックして実行すると、インストールが始まる。

⑦ セットアップに使用される言語を選択する画面が表示されるので、好みの言語を選択

する。(デフォルトは日本語)

⑧ セットアップウィザードの開始画面が表示されるので、「次へ」を選択する。

ライセンス情報が英語で表示されるが、次のサイトに日本語訳がある。同意する場合

は「次へ」を選択する。

[ http://www.opensource.jp/gpl/gpl.ja.html ]

⑨ インストール先の指定画面が表示されるので、デフォルトが都合悪い場合は任意のデ

ィレクトリを指定する。

画面 4.4:

Page 7: Ⅰ. Rの基礎 2017

I-5

⑩ コンポーネントの選択画面が表示される。全てインストールしても問題はないが、イ

ンストール先の PC の CPU も OS も 64bit の場合は、「32-bit Files」(32 ビット版 R)

のチェックを外して、「次へ」を選択する。

画面 4.5:

Page 8: Ⅰ. Rの基礎 2017

I-6

⑪ 起動時オプションの画面が表示されるので、「いいえ(デフォルトのまま)」を選択。

⑫ プログラムグループの指定画面が表示される。スタートアップ画面に R を登録する場

合はそのまま、登録したくない場合は「プログラムグループを作成しない」にチェッ

クを入れ、「次へ」を選択する。

⑬ 画面 4.6 のような追加タスクの選択画面が表示されるので、「アイコンを追加する:」

☆ 32bit 版と 64bit 版について

CPU OS R

32bit 版 32bit 版のみ 32bit 版のみ

64bit 版 32bit 版 32bit 版のみ

64bit 版 原則 64bit 版(※)

(※) 通常はインストールする PC の CPU と OS にあわせた版をインストー

ルする。例外的に、32bit 版用しかない古いパッケージを使用したい場合

等に、CPU と OS が 64bit 版の PC に 32bit 版をインストールする。

Page 9: Ⅰ. Rの基礎 2017

I-7

の項では欲しいアイコンに、「レジストリ項目:」では全てにチェックが入っているこ

とを確認し、「次へ」を選択する。

画面 4.6:

⑭ セットアップウィザードの完了画面が表示されるので、「完了」ボタンを選択してセッ

トアップを終了させ、デスクトップに「R x64 3.4.0」というアイコンができているこ

とを確認する。

欲しいアイコンを

チェック

全てにチェック

Page 10: Ⅰ. Rの基礎 2017

I-8

5.R の起動と終了

デスクトップの「R x64 3.4.0」というアイコンをダブルクリックすると、画面 5.1 が

表示される。

画面 5.1:

プロンプト「>」が表示されているときに、コマンドを入力することができる。ここに

「q()」と入力、改行キーを押し、質問画面で「いいえ」を選択すれば、R が終了する。

画面 5.2:

Page 11: Ⅰ. Rの基礎 2017

I-9

[演習 1] 電卓代わりに使ってみよう

6.変数の作り方

1 + 2 + 5 + 10

4 * 185

(15 + 30) * 88 / 30

sum(1:100) # 1 から 100 までの整数の合計

sqrt(10) # 10 の平方根

1+2+3; 10+987/400

ポイント:

プロンプト「>」の右側にコマンドを入力し、Enter キーを押すと実行される

「#」の後ろはコメント(同じ行のみ)

セミコロン「;」を使うと、一行に複数のコマンドを書くことができる

上向き矢印キー「↑」で過去に打ったコマンドを順番に再表示できる

コマンド入力中でも、「Esc」キーで入力中のコマンドをなかったことにできる

基本ルール:

英数字、ピリオド(.)、アンダースコア(_)を組み合わせて作る

英字の大文字・小文字は区別される

変数名には日本語も使用可能

数字とアンダースコアを変数名の頭に使うことはできない

以下のような記号は使用できない

?, $,%, ^, &, *, (, ), -, #, ?, , , <, >, /, |, ¥, [ ,] ,{,};

予め用途が決まっている次のような予約語も変数名に使用できない

break else FALSE for function if in Inf NA NaN next NULL repeat TRUE while

変数には「<-」を使って値を与える(付値)

関数の引数の既定値の設定・変更は「=」による

変数は「<-」で値を与える(付値)

Page 12: Ⅰ. Rの基礎 2017

I-10

[演習 2] 変数に値を入れてみよう

a <- 10 # 変数 a に 10 を付値

a # 変数名だけを入力すると内容が表示される

b <- rep(1, times=5) # 変数 b に 1 が 5 つ反復したベクトル

b # 変数名だけを入力すると内容が表示される

c <- 1:10 # 変数 c に 1 から 10 までのベクトルを付値

d <- seq(1, 10, by=2)

# 変数 d に 1 から 10 まで 2 刻みのベクトルを付値 →[1] 1 3 5 7 9

(e <-rep(c(1, 3, 4), times=3)) # 外側を括弧で囲むと付値と同時に表示をする

(e # 変数 e を表示しようとしたときに誤って)を入れ

忘れた場合、通常のプロンプト「>」の代わりに式が継続している「+」が表示される

) # 続けて入力することができる

多くのプログラミング言語では、変数を使う前に名前やデータ型などの定義が必要だが、

R の場合は事前の定義抜きで新たな変数にデータを付値することにより、付値するデータに

応じた型でその変数が作成される。

括弧が閉じていない場合や式の途中で改行を入力してしまうと、通常のプロンプト「>」

の代わりに式が継続していることを示す「+」が表示される。この場合、引き続き残りの

式を入力すれば良い。また、誤った場合や入力途中でやめたいときなどは「Esc」を押すと

通常のプロンプトが表示される。

7.データの型

変数のデータ型には次のようなものがあり、関数 typeof ()、mode()で調べることが

できる。データ型の個別のチェックや変換のために、以下のような関数がある。

データ型 チェック関数 変換関数

整数型(integer)

実数型(double)※ 倍精度浮動小数点

is.numeric() as.numeric()

整数型(integer) is.integer() as.integer()

実数型(double) is.double() as.double()

文字型 (character) is.character() as.character()

論理型 (logical) ※ TRUE/FALSE の二値 is.logical() as.logical()

Page 13: Ⅰ. Rの基礎 2017

I-11

[演習 3] 様々なデータ型の変数を作ってみよう

# 実数データと整数データ

x1 <- 1; x2 <- 6.78

typeof(x1)

typeof (x2) # 値に整数を入れても実数型 (double)

# 整数に変換

as.integer(x1) # ここでは変数の値を書き換えていない

as.integer(x2) # 少数点部分を落として強制的に整数に変換される

x1 <- as.integer(x1) # x1 を整数型に変換する

# 文字データ

x3 <- "a"; x4 <- "abcdefghi" typeof(x3); typeof(x4) # "character"

# 論理値データ

x5 <- TRUE; x6 <- FALSE typeof (x5); typeof (x6) # "logical"

型が異なるデータ同士あるいは計算結果の型が異なる場合は、計算時に型が自動的に変

換される。計算時のトラブルは、数字のはずのデータにアルファベットが混ざっているた

めに変数が文字属性になっている場合等、データ型の問題であることが多く、事前にチェ

ック関数を使うことでエラーを回避できる。また、論理値データは計算に使用することが

できる。

[演習 4] 様々なデータ型で計算をしてみよう

# 演習 3 で作成した変数 x1~x6 を使用する

x1 * 1.5 # ○

x2 * 1.5 # ○

x3 * 1.5 # ×

x4 * 1.5 # ×

x5 * 1.5 # ○ # 論理値データは、True は 1、False は 0 として計算される

x6 * 1.5 # ○

x7 <- x1 * 1.5 # 整数型(integer)に変換した x1 に 1.5 を掛けると?

Page 14: Ⅰ. Rの基礎 2017

I-12

typeof(x7) # x7 は自動的に実数型になり、計算に問題は起きない

8.データの構造

主なデータ構造には、ベクトル、行列、配列、データフレームとリストがある。R のデー

タの最小の単位がベクトルで、スカラー(数字 1 つ)は、要素数 1 のベクトルとして扱わ

れる。ベクトルは、画面上で横に並べて表示されるが、縦ベクトルである。

図 8.1 データ構造のイメージ

データ構造は、関数 class ()で確認でき、ベクトルについては関数 typeof と同様に、ベ

クトル内のデータ型を、それ以外は行列、配列、リスト、データフレームの別を表示する。

個別の構造チェックや変換のために、次のような関数が用意されている。

ポイント:

計算トラブルは型の問題が原因となることが多い

論理値データは計算できる

Page 15: Ⅰ. Rの基礎 2017

I-13

データ構造 作成方法 チェック関数 変換関数

ベクトル(vector) c() is.vector() as.vector()

行列(matrix) matrix() is.matrix() as.matrix ()

配列(array) array() is.array() as.array()

リスト (list) list() is.list() as.list()

データフレーム (data frame) data.frame() is.data.frame() as.data.frame()

行列を横に結合するために、関数 cbind()、縦に結合するために rbind()を利用する。

[演習 5] 様々な構造のデータを作って眺めてみよう

# 数値・文字列ベクトル====================

y1 <- c(1, 2, 3)

y2 <- c("a", "bcd", "ef", "ghijkl")

is.vector(y1); is.vector(y2) # 構造の確認

# 数値や文字列の行列の作成====================

# 数値の行列

y3 <- matrix(1:9, nc=3)

y3 # 要素は縦並びに格納される

y3[2,2] # 2 行 2 列の要素を取り出す

y3[3,] # 3 行目の要素全てを取り出す

y3[,3] # 3 列目の要素全てを取り出す

y3 <- matrix(1:9, nc=3, nr=4)

y3 # 要素が足りないときは再利用される

# 文字列の行列

(y4 <- matrix(c("a", "bc", "def", "ef", "g", "h"), nr=2))

Page 16: Ⅰ. Rの基礎 2017

I-14

# 配列====================

(y5 <- array(1:24, c(2,3,4)))

y5[1,1,1] # 個別の要素の指定方法

y5[,,-1] # 要素の部分的な指定方法

# リスト====================

(y6 <- list(y1, y2, y3, y4, y5))

y6[[2]][2] # 個別の要素の指定方法

names(y6) <- c("y1", "y2", "y3", "y4", "y5") # 構成要素に名前をつける

y6 # つけた個別要素名を使った指定の方法

y6$y5[1,2,1]

str(y6) # データ構造の確認方法

# cbind, rbind====================

(z1 <- c(1,2,3)) # 要素数 3 の縦ベクトル

(z2 <- matrix(1:12, nc=3, nr=4)) # 4×3 の行列

(z3 <- rbind(z1, z2)) # 5×3 の行列

(z4 <- c(1,2,3,4,5)) # 要素数 5 の縦ベクトル

(z5 <- cbind(z3, z4)) # 5×4 の行列

z5[2,4] # 2

9.因子(factor)属性について

因子とは、性別や血液型などのカテゴリ変数を効率良く保存・表示することができるデ

ータのクラスで、次のような特徴を持つ。

• 文字のようだが表示に引用符はつかず、実態は数値として扱われるが、計算には使用

できない

• 因子は複数の水準(level)から構成される

• データ型と同様、is.factor() / as.factor() で確認や型変換ができる

[演習 6] 因子属性のデータを作って眺めてみよう

y <-factor(c("A", "AB", "A", "A", "B", "O", "O"))

y

typeof(y) # データの保存型を確認(integer)

class(y) # データのクラスは因子(factor)

str(y) #オブジェクト構造を確認

(as.character(levels(y))[y]) #因子属性→文字列に変換:"A" "AB" "A" "A" "B" "O" "O"

y1 <- factor(c("01", "98", "12")) #数値を文字列として因子属性にした場合

Page 17: Ⅰ. Rの基礎 2017

I-15

(y2 <- as.numeric(levels(y1))[y1])#factor→数値にする時、水準値になるため注意

# [1] 1 98 12

10.パッケージのインストールと使用方法

パッケージ(package)とは、様々な機能を持つ関数やデータをまとめたライブラリで、

次のような特徴を持つ。

• ユーザが独自に作成し、github など任意のサイトで公開することができる

• CRAN(R の公式サイト)では、一定基準を満たしたユーザ作成の公認パッケージが公開

されている

• 公認パッケージ一覧

https://cran.r-project.org/web/packages/available_packages_by_name.html

画面 10.1

見出しをクリックすると、インストール用ファイル(Windows 用インストールファイル

/Windows binaries の、r-release にリンクされている zip ファイル)やマニュアルファ

イルが置かれている、画面 10.2 のような解説ページに飛ぶ(ただし英語のみ)。

パッケージのインストール方法(1) : インターネット経由で直接インストール

Page 18: Ⅰ. Rの基礎 2017

I-16

メニューバーの「パッケージ」

⇒ 「パッケージのインストール」

⇒ CRAN ミラー選択画面から適当なミラーサイト(通常自分がいる場所の近く)を選

⇒ インストールしたいパッケージを選択

※ 依存関係のあるパッケージもまとめてインストールされる

パッケージのインストール方法(2) : ネットがない場合は zip ファイルから

画面 10.1 のパッケージ一覧からインストールしたいパッケージを選択し、画面 10.2 か

ら Windows 用のインストールファイル(zip ファイル)をダウンロードする

⇒ R のメニューバーから「パッケージ」を選択

⇒ 「ローカルにある zip ファイルからのパッケージのインストール」を選択

※ 依存関係のあるパッケージも個別にインストールする必要がある

インストールは最初の一度だけ行い、さらに利用時には関数 require()あるいは library()

によりパッケージ名を指定してロードする。

画面 10.2

Page 19: Ⅰ. Rの基礎 2017

I-17

[演習 7] epade パッケージを使ってみよう

epade パッケージは、R から HTML 形式の表を直接作成する機能を持ち、表のレイアウ

トや構成を制御する関数が収録されている。

ここでは、R に組み込まれている様々なデータの中から、あやめの花の寸法に関する iris

というデータセットを用いて、数量項目の多変量データの基本的な可視化方法である散布

図行列を描く。組み込みデータの一覧は、data()で表示することができる。

関数 data を使い、iris データセットを呼び出し、次に epade パッケージを用いて、各

変量について 3D の棒グラフを作成する。epade パッケージを使うために、まずインスト

ール作業を行った後、以下のコマンドを入力する。パッケージのインストール作業ははじ

めの一度だけで良いが、require または library 関数によるパッケージのロードはセッショ

ン毎に行う。

data(iris) # あやめの花の計測データ

help(iris) # iris データの説明表示(英語)

マニュアル

Windows 用インストールファイル

依存するパッケージ

Page 20: Ⅰ. Rの基礎 2017

I-18

iris # データフレームの内容表示

# データをあやめの花の種類別に分ける

ix1 <- which(iris[,5] == "setosa") # 品種名 setosa のデータ番号一覧

ix2 <- which(iris[,5] == "versicolor") # 品種名 versicolor のデータ番号一覧

ix3 <- which(iris[,5] == "virginica") # 品種名 virginica のデータ番号一覧

# 色分けフラグをつくる

f1 <- rep(NA, 150) # データサイズと同じ 150 個のフラグ

f1[ix1] <- 1; f1[ix2] <- 2; f1[ix3] <- 3;

pairs(iris[,1:4], pch=21, bg=f1, col="gray", cex=1.5) # 図 10.1

# プロット点タイブ 21 番、点自体は灰色、塗り潰しを f1 で指定し、プロット点 1.5 倍

require(epade) # 3D棒グラフを作成する epace パッケージのロード

# プロット(1): 種類別に第一変数を棒グラフにする。

bar3d.ade(iris[,5], iris[,1])

# プロット(2): オプションで改善。lcol はバーのふちの色、alpha は透過度指定

bar3d.ade(iris[,5], iris[,2], lcol="white", alpha=0.2)

# プロット(3): wall で壁面をグレーにして、軸ラベルを表示

bar3d.ade(iris[,5], iris[,3], lcol="white", wall=1, alpha=0.2,

xlab=colnames(iris)[5], zlab=colnames(iris)[3])

# プロット(4): 位置がよくない z 軸ラベルを手作業で入れる

bar3d.ade(iris[,5], iris[,4], lcol="white", wall=1, alpha=0.2,

xlab=colnames(iris)[5], zlab="")

text(locator(1), colnames(iris)[4]) # 図 10.2

図 10.1 アイリスデータの散布図行列

Sepal.Length

2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5

4.5

5.5

6.5

7.5

2.0

2.5

3.0

3.5

4.0

Sepal.Width

Petal.Length

12

34

56

7

4.5 5.5 6.5 7.5

0.5

1.0

1.5

2.0

2.5

1 2 3 4 5 6 7

Petal.Width

Page 21: Ⅰ. Rの基礎 2017

I-19

図 10.2 3D 棒グラフ

Page 22: Ⅰ. Rの基礎 2017

I-20

[参考] アイリスデータ

Fisher(1936)が出典、データ収集は Anderson (1935)。データの大きさが 150、5 変

数の、三種類のアイリス(あやめ)の花の 4 つの特性 (がく片の長さ、がく片の幅、弁の

長さ及び弁の幅) に関する寸法データが、あやめの種類名とともに収録されている。

連番 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

7 4.6 3.4 1.4 0.3 setosa

8 5.0 3.4 1.5 0.2 setosa

... ... ... ... ... ...

50 5.0 3.3 1.4 0.2 setosa

51 7.0 3.2 4.7 1.4 versicolor

52 6.4 3.2 4.5 1.5 versicolor

... ... ... ... ... ...

100 5.7 2.8 4.1 1.3 versicolor

101 6.3 3.3 6.0 2.5 virginica

102 5.8 2.7 5.1 1.9 virginica

... ... ... ... ... ...

150 5.9 3.0 5.1 1.8 virginica

Anderson, Edgar (1935). The irises of the Gaspe Peninsula, Bulletin of the American Iris Society,

59, 2–5.

Fisher, R. A. (1936) The use of multiple measurements in taxonomic problems. Annals of

Eugenics, 7, Part II, 179–188.