R:円グラフを描こう
1. データの準備
今日はデータセットの中からいい感じのデータが見つからなかったので、
先日の東京都知事選のデータを使用します。
5万票以上は個人で、5万票未満はまとめることとします。
まずは"vote"に各票数をいれます。
> vote <- c(2112979.000,982594.767,956063.000,610865.000,88936.000,64774.000,52886.21)
次に"vote"のラベルとして候補者名をいれます。
(氏名を日本語で入れるとグラフ化の際に文字化けしたので頭文字を使用します)
> candidate <- c("M","U","H","T","I","D","others")
"vote"の名前に"candidate"を使用します。
> names(vote) <- candidate
そうすると、"vote"にラベルがつきます。
> vote
M U H T I D others
2112979.00 982594.77 956063.00 610865.00 88936.00 64774.00 52886.21
2. 円グラフを描こう
円グラフを描くには関数pieを用います。
pie(vote)で円グラフが描けますが、色も指定できるので、
まず、配色したいとおもいます。
> vote.col <- c("yellow","green3","purple","violetred1","cyan","lightblue","mistyrose")
この結果をもとに円グラフを描きます。
> pie(vote,col=vote.col,radius=1)
ここで、"radius"は円グラフの大きさを指定する引数で-1から1の範囲で作成します。
結果は以下の通りです。
モノクロ印刷をしなければならないときは、
カラー表現だと印刷したら区別がつきません。
その際は、斜線をもちいます。
斜線の密度は"density"を、斜線の角度は"angle"を用います。
> pie(vote,density=30,angle=30+20*1:7)
結果は下記の通りです。
3. 余談①
票数に小数点以下の値があったのでなぜか調べてみました。
どうも法律で同姓や同名があり、重複した部分のみが投票された場合でも、
その票は有効となり、決まりに従い、その票がそれぞれの候補者にわけられるそうです。
こんかいは"けんじ"という同名の候補者がいて、かつ、"けんじ"のみ明記した票があったので、各候補者の票数の小数点以下が0でなかったそうです。
4. 余談②
グラフが描かれるシート"Quartz"では日本語がうまく表示されませんでした。
色々調べると、".Rprofile"というファイルに以下のコードをかけばいいそうです。
setHook(packageEvent("grDevices", "onLoad"), function(...){ grDevices::quartzFonts(serif=grDevices::quartzFont( c("Hiragino Mincho Pro W3", "Hiragino Mincho Pro W6", "Hiragino Mincho Pro W3", "Hiragino Mincho Pro W6"))) grDevices::quartzFonts(sans=grDevices::quartzFont( c("Hiragino Kaku Gothic Pro W3", "Hiragino Kaku Gothic Pro W6", "Hiragino Kaku Gothic Pro W3", "Hiragino Kaku Gothic Pro W6"))) # grDevices::quartz.options(family="sans") } ) attach(NULL, name = "MacJapanEnv") assign("familyset_hook", function() { if(names(dev.cur())=="quartz") par(family="sans")}, pos="MacJapanEnv") setHook("plot.new", get("familyset_hook", pos="MacJapanEnv")) #setHook(packageEvent("grDevices", "onLoad"),function(...) grDevices::ps.options(family="Japan1")) options(X11fonts = c("-alias-gothic-%s-%s-*-*-%d-*-*-*-*-*-*-*", "-adobe-symbol-*-*-*-*-%d-*-*-*-*-*-*-*")) setHook(packageEvent("grDevices", "onLoad"), function(...) grDevices::ps.options(family="Japan1Ryumin"))
でも、それ以前に、".Rprofile"というファイルがみあたりません。
なければ作成すればいいそうですが、どこに作成したらいいのかわかりません。
mac使い始めてまもないのでファイル関係がよくわかりません。
[Macintosh HD] > [ライブラリ] > [Frameworks]あたりが怪しい気がしますが…
また調べてみます。
R:棒グラフを描こう
1. データの準備
今日はpackage"MASS"に用意されているデータセット"VADeaths"を用います。
MASSはRをインストールした際にインストールされていますが、呼び出す必要があります。
では、まず、MASSを呼び出して、その中身を確認します。
> library(MASS) #"MASS"を呼び出す
> VADeaths #"VADeaths"の中身を確認する
Rural Male Rural Female Urban Male Urban Female
50-54 11.7 8.7 15.4 8.4
55-59 18.1 11.7 24.3 13.6
60-64 26.9 20.3 37.0 19.3
65-69 41.0 30.9 54.6 35.1
70-74 66.0 54.3 71.1 50.0
列は左から「田舎/男性」「田舎/女性」「都会/ 男性」「都会/女性」と地域と性別を表し、行は上から「50〜54歳」「55〜59歳」…と年齢を表しています。
表中の数値は1940年代のヴァージニア州の100人あたりの死亡率を表しています。
詳しくは「help(VADeaths)」で参照してください。
2. 棒グラフを描こう
棒グラフの作成は関数barplotを用います。
> barplot(VADeaths) #"VADeaths"の棒グラフを描く
何も指定しないと、1列のデータを1つの棒グラフに描きます。
1列のデータを1組として、各データを1つの棒に描く場合は、"beside=FALSE"を追記します。
また、色分けしたい場合は"col="を用います。
>barplot(VADeaths,beside=TRUE,col=c("lightblue","mistyrose","lightcyan","cornsilk"))
引数内に"legend"を用いると凡例を追加することができます。
>barplot(VADeaths,beside=TRUE,col=c("lightblue","mistyrose","lightcyan","cornsilk"),legend=rownames(VADeaths))
凡例の位置変更は勉強中です。
やりかたが分かったら、今日の分を修正します。
マウスで凡例位置を指定することもできるそうですが、
狙い通りの場所に設置できませんので、分かり次第改めてご報告致します。
R:基本統計量の算出
統計量(statistic)とは、統計データから計算、要約した数量のことです。
基本統計量とは、通常広く使用されている方法です。
これも結果を見ていきましょう
> fs <- c(0:8) #"fs"に0から8の数値を入れる
> fs #"fs"の中身を表示する
[1] 0 1 2 3 4 5 6 7 8
> sum(fs);mean(fs);max(fs);min(fs) #"fs"の合計、算術平均、最大値、最小値を計算する
[1] 36
[1] 4
[1] 8
[1] 0
> range(fs);median(fs) #レンジ(範囲)と中央値を計算する
[1] 0 8
[1] 4
> quantile(fs) #"fs"の分位数を求める
0% 25% 50% 75% 100%
0 2 4 6 8
> var(fs) #標本分散を求める
[1] 7.5
> sd(fs) #標本標準偏差を求める
[1] 2.738613
> summary(fs) #四分位数と平均を返す
Min. 1st Qu. Median Mean 3rd Qu. Max.
0 2 4 4 6 8
行列も行ごとや列ごとで計算可能です。
> y <- matrix(1:8,2,4) #1から8の値を2行4列のマトリックスとする。
> y #"y"の中身を表示する
[,1] [,2] [,3] [,4]
[1,] 1 3 5 7
[2,] 2 4 6 8
> apply(y,1,mean) #行の平均を求める
[1] 4 5
> apply(y,2,summary) "列のサマリーの計算も可能です。
[,1] [,2] [,3] [,4]
Min. 1.00 3.00 5.00 7.00
1st Qu. 1.25 3.25 5.25 7.25
Median 1.50 3.50 5.50 7.50
Mean 1.50 3.50 5.50 7.50
3rd Qu. 1.75 3.75 5.75 7.75
Max. 2.00 4.00 6.00 8.00
この"apply"の書式を一般的にかくと
apply (X , MARGIN , FUN)
引数Xはデータセット、MARGINは行ならば"1"を、列ならば"2"、FUNには統計量の関数や計算式などを与えます。
以上が、基本的な統計量になります。
R:データの演算
データの演算は例を見ていただくのが一番手っ取り早くわかると思います。
なお、"#"のあとの文はコメントとして扱われプログラムには影響しません。
また、";"を使うと複数の独立したコマンドを1行に記入することができます。
> 7+3 #加算
[1] 10
> 7-3 #減算
[1] 4
> 7*3 #乗算
[1] 21
> 7/3 #除算
[1] 2.333333
> 7^3 #ベキ算
[1] 343
> 7%/%3 #除算の商
[1] 2
> 7%%3 #除算の余り
[1] 1
> abs(-5) #絶対値
[1] 5
> exp(1) #自然対数
[1] 2.718282
> sqrt(5) #平方根
[1] 2.236068
> log(exp(1)) #自然対数
[1] 1
> log10(10) #常用対数
[1] 1
> round(3.1415,2) #四捨五入
[1] 3.14
> sin(pi/2);cos(pi);tan(0) #三角関数
[1] 1
[1] -1
[1] 0
> asin(0);acos(1);atan(0) #逆三角関数
[1] 0
[1] 0
[1] 0
R:データの形式
Rで使用する主なデータの形式は以下の5つです。
- ベクトル
- マトリックス
- データフレーム
- 配列
- リスト
それぞれが具体的にどのような形式なのか順番に見ていきましょう。
例にはRをインストールしたときに含まれているデータセットirisを用います。
これは、セトサ、バーシカラー、バージニカという3種類のアヤメの花について、それぞれ50標本の、ガク片の長さ、ガク片の幅、花弁の長さ、花弁の幅を計測した150標本のデータです。
Rにて、
>iris
と記入しenterをおせば、データセットの中身の確認ができます。
1. ベクトル
ベクトルは1行で表されるデータです。
ガク片の長さ | ガク片の幅 | 花弁の長さ | 花弁の幅 |
---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 |
この情報を例えばsample1という変数に代入するには、cを用います。
>sample1 <- c(5.1,3.5,1.4,0.2)
これらデータのラベルも追加することができます。
>names(sample1) <- c("ガク片の長さ","ガク片の幅","花弁の長さ","花弁の幅")
ラベルを追加したあとにsample1と打ち込みenterを押すと、
ガク片の長さ | ガク片の幅 | 花弁の長さ | 花弁の幅 |
---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 |
2. マトリックス
例として、まず次のようなsample2のデータを作成します。
ガク片の長さ | ガク片の幅 | 花弁の長さ | 花弁の幅 |
---|---|---|---|
7.0 | 3.2 | 4.7 | 1.4 |
まずはsample2のベクトルを作成します。
>sample2 <- c(7.0,3.2,4.7,1.4)
次に先ほど作成したsample1と結合します。
>rei.matrix <- rbind(sample1,sample2)
このrbindは1つのベクトルを行要素として結合します。
列要素として結合させたいときは、cbindを用います。
では、rei.matrixの中身を確認します。
>rei.matrix
ガク片の長さ | ガク片の幅 | 花弁の長さ | 花弁の幅 | |
---|---|---|---|---|
sample1 | 5.1 | 3.5 | 1.4 | 0.2 |
sample2 | 7.0 | 3.2 | 4.7 | 1.4 |
3. データフレーム
表形式のデータの中に数値や文字列など異なるデータが混在しているときはデータフレームを用います。
re.matrixにあやめの種類のデータを追加します。
rei.matrixのデータは数値、アヤメの種類のデータは文字列なので、データフレームを用います。
まずは、rei.matrixに加える種類のデータを作成します。
種類 <- c(setosa,versicolor)
これをrei.matrixに加えます。
rei.FD <- data.frame(cbind(rei.matrix , 種類)
ここでrei.FDと記入しenterを押すとrei.FDの中身を確認できます。
>
ガク片の長さ | ガク片の幅 | 花弁の長さ | 花弁の幅 | 種類 | |
---|---|---|---|---|---|
sample1 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
sample2 | 7.0 | 3.2 | 4.7 | 1.4 | versicolor |
4. 配列
複数のデータ表を、1つのオブジェクトとしてまとめたものを配列(array,分割表)といいます。
> (AR1 <- array(LETTERS[1:24],c(2,4,3)))
, , 1
[,1] [,2] [,3] [,4]
[1,] "A" "C" "E" "G"
[2,] "B" "D" "F" "H"
, , 2
[,1] [,2] [,3] [,4]
[1,] "I" "K" "M" "O"
[2,] "J" "L" "N" "P"
, , 3
[,1] [,2] [,3] [,4]
[1,] "Q" "S" "U" "W"
[2,] "R" "T" "V" "X"
5. リスト
リストは、ベクトル、行列、配列、リストなどの異なるデータ型のデータを1つのオブジェクトとして扱うことが 可能なオブジェクトです。リスト関数listを用いて作成します。
>L1 <- list(c(1:8),c("A","B"),matrix(1:12,2,6))
6. データ型式の確認
データオブジェクトの属性は、関数classを用いて確認することが出来ます。
以上
ココロオドル人生を送ろう!!
★★★★★(星5つ)
1. ココロオドル仕事
「ココロオドル仕事」…、それは、自分が楽しくて、続けることができて、世間から求められている仕事。
Bamtitchは仕事と趣味の境界線が曖昧な状態にあこがれます。それはワーカホリックとかじゃなく、まさしくココロオドル仕事をしている状態です。
たとえば、仕事が始まる月曜日の朝にテンションがあがり、週末には「えっ!?もう金曜日」みたいなのってあこがれます。もちろん休みの日は充実したプライベートの時間を過ごしてです。
でもBamtitchは昔から「○○になりたい!!」みたいな夢もなく、自分にとってココロオドル仕事って何やろうって自問自答を繰り返してきました。
この本では指針を示してくれています。
ココロオドル仕事とは、考えて見つかるようなものじゃない。やってみて初めて見つかるもの。
行動してみれば、おのずと結果が出る。そうして、うまくいかないこと、向いていないことが自然淘汰されていくことで、気張らなくても、肩肘張らなくても、決断できなくても、気がつけば前に進んでいるんです。
どの仕事をしていたら、自分がココロオドル状態になるかは、やってみなければわかりません。
自分が前に気持ちよく進むために、自分に向いていない仕事は、自然が淘汰してくれただけ。
つまり、自分にとってココロオドル仕事が何か最初から分かっている人は非常に少なく、とりあえず、やりたいことを色々経験して、ずっと続いていることが自分にとってのココロオドル仕事であるとのこと。
なので、興味があることはとりあえずやってみる。それが大事で、やろうやろうとして、結局しない=自然淘汰だそうです。
2. 「○○になりたい!!」は目的でなく手段です
多くの人は、なりたい職業につけないことを「挫折」と考えてしまいます。でも、それは違う、と思うのです。
じつは、希望の仕事ができなくても、試験に落ちても、それは悲しいことではあるけれど、たいした問題ではありません。
でも、それを、「挫折」と考え、心が折れてしまう人が多いのは、子どもの頃から「夢は何?」「何になりたいの?」と聞かれすぎているせいで、多くの人が、"目的"と"手段"を取り違えてしまうからではないでしようか。
たとえば、宇宙飛行士になりたい、お嫁さんになりたい、日本一大きい会社を作りたい、…これらは、全部"手段"です。
何のための"手段"か?
それは、生まれた人全員が「ココロオドル人生を送る」という目的のための手段です。
「ココロオドル仕事を見つけること」ではなく「ココロオドル人生を送る」ことを目的に置いているところが非常に気に入ったので、この本を星5つにしました。
やっぱり、楽しく周りの人にも必要とされる人生を送りたいですよね。
プラスBamtitchは5年後の自分がどうなってるか楽しみで仕方がないみたいなのに憧れます。5年後の自分が想像できるなんて面白くないし、心は躍りませんよね。
3. ココロオドル仕事の見つけ方
①やりたいことを書き出す
→できるかどうかは関係なく、思いつくもの、心からそう思うものは全部書き出す
②アクションプランに落とし込む
→①のアクションプランを思いつくものすべて書き出す
③こなしていく
→②をひとつひとつ実践する。ココロオドル仕事でないものは自然淘汰される。
④深く考えずにやり続ける
→アクションプランの中でなぜかやめずに残っているもの、いつのまにか時間をかけているものを、深く考えずにやりつづける
⑤今の仕事より、これがやりたい!と思ったら動く
Bamtitchもこれまでいろいろ興味がでたもの、やってみたいものをやってきたけど、なにげにずっと続いているんが統計の勉強です。
なので、統計がココロオドル仕事に近いのではと思っていますが…どうなることやら。
とにかく!
夢中になって働きたい人は、この本、必読です!!
R:インストール済/読込済パッケージの確認方法
様々な関数やデータセットが集められているパッケージは大きく分けると3種類あります。
- Rをインストールした際に自動的にインストールされ、すぐに利用可能な状態にあるパッケージ
- Rをインストールした際に自動的にインストールされているが、読み込みが必要なパッケージ
- 別途インストールが必要なパッケージ
今、自分のPCにある利用可能なパッケージは、libraryで確認できます。
>library()
なお、Rをインストールした際には、利用可能なパッケージは7個あります。
base / datasets / grDevices / graphics
/ methods / stats / utils
同じく、インストールまでしているパッケージはsearchで確認ができます。
>search()
こちらはRをインストールした際には20個のパッケージがあります。
MASS / boot / class / cluster / codetools
/ foreign / grid / kernSmooth / lattice / mgcv
/nlme / nnet /rcompgen / rpart / spatial
/ splines / stats4 / survival / tcltk / tools
このインストールまでしたパッケージを利用可能な状態にするにはlibraryを用います。
>library(MASS)
インストールしたけど、いまいちどんな内容のパッケージかわからへんねんなってときには、helpでパッケージの中身を確認することができます。
>help(package="MASS")
インストールもしていないパッケージをインストールするには、メニュー項目の「パッケージ」(Windows)もしくは「パッケージとデータ」(Mac)をクリックして「パッケージインストーラ」をクリックとしていけば、インストールできます。
ですが、パッケージの名前が分かっていれば、より手間なく簡単にインストールすることができます。
>install.packages("qcc")
現在5000程度のパッケージがネット上で無料公開されています。
その中には最新の統計手法を用いたパッケージもあります。
是非とも様々なパッケージを適切につかってより良い解析を実施していきましょう。
【参考文献】
Rによるデータサイエンス - データ解析の基礎から最新手法まで
- 作者: 金明哲
- 出版社/メーカー: 森北出版
- 発売日: 2007/10/13
- メディア: 単行本(ソフトカバー)
- 購入: 36人 クリック: 694回
- この商品を含むブログ (63件) を見る