Rで『身近な統計(’12)』 – 第7章 その2
2項分布
添付のExcelもあっさりですが、Rでもあっさりです。
実行できるようになっているので、p, n
を変えて試してみて下さい。
3行目
変数に入れずに関数の引数に直接、書けますが、次の関数の説明のために、成功回数0
回からn
回までをx
に代入しました。
for
文などの繰り返しを使わなくても、ベクトルの要素ごとに処理してくれる場合には、ベクトルでまとめて与えれば、全ての要素について求めることができます。
4行目
dbinom()
は、二項分布の確率密度を求める関数です。
確率分布にまつわる関数は、接頭語 d, p, q, r
+ 確率分布名(略称)です。
接頭語とその関数の動きは、
- d:密度 density 確率点qでの、確率密度を返します。離散型確率分布の場合は、特定の分位点(確率点)での確率と同じです。確率分布のグラフを描く場合などによく使われます。
- p:確率 probability 分位点(確率点)qまでの確率を返します。密度の積分・累積です。また、分位の逆関数です。
- q:分位 quantile 確率pでの分位点(確率点)を返します。確率の逆関数です。
- r:乱数 random number(s) 確率分布に従う乱数を発生させます。
と、私は憶えています。…間違っていたら、ご連絡をお願いします。
本やWebでももっと難しい説明をしているかもしれませんが、このぐらいにしておいた方が、憶えやすいと思いますが…いかがでしょうか。
そして、この場合の確率分布は二項分布= binomial distribution ですから、その略の binom
です。
5行目
コンソールに出力する際、見やすくなるよう、ベクトルの要素に名前を付けています。名前を付けるには、names()
を使います。名前を参照する場合も names()
が使えます(この場合は names()
が右辺にくる)。カッコの中は、名前を付けたい(参照したい)ベクトルです。
名前は、書式に応じた文字列を返す関数 sprintf()
で作っています。書式はC言語と同じです。書式以外の文字が書かれていれば、それも含めて、1つの文字列として返します。ここでは”%d
“が書式で、整数型を示しています。ここにx
の値が整数型で入ります。前後に”P(X=
“と”)
“があるので、x
が1
の場合”P(X=1)
“が返ります。
2項分布の確率計算
基本的に上のものと同じで、変更点は、成功確率、試行回数を変えているところ、名前を数字にしているところ、確率の表示を有効桁数3桁に制限しているところ、です。
5行目
名前の型は文字(文字列)なので、本来は as.character(x)
とすべきでしょうが、そのあたりは自動でやってくれるので、そのままにしました。
6行目
“digits = n
“で、表示する有効桁数をn
桁に変えることができます。最終的に出力する場合など、Rが内部で持っている全ての桁を表示する必要もないので、必要に応じて使いましょう。
10行目
10行目以降はグラフの描画です。ここでは、現在のグラフィックスパラメータを保存しています。11行目でグラフィックスパラメータを変更しますが、par()
を使って、グラフィックスパラメータを直接変更すると、変更が残ったままになります。他の描画にも影響するので、後で元に戻せるように、変更前の状態を適当な変数に保存します。
11行目
par()
を使って、グラフィックスパラメータを変更します。カッコの中身は、
mar = c(4.1, 4.1, 1, 1)
プロット領域(グラフの枠の中)の、作図領域の中でのマージンをどれだけ取るかを、行の高さ、何行分かで指定します。4つの数字は順に、下、左、上、下のマージンです。tcl = 0.5
軸の目盛りの長さを行の高さ、何行分かで指定します。マイナスで外側、プラスで内側になります。las = 1
軸の目盛りのラベルを水平にします。
12行目
barplot()
で、棒グラフを描きます。barplot(px)
と、ベクトルを与えただけでも、シンプルなグラフが描けます。また、px
の要素に名前を付けたので、要素の名前が自動で横軸の目盛りのラベルに割り当てられます。その他は、以下のとおりです。
ylim = c(0, max(px) * 1.04)
y軸の範囲を設定します。何も設定しないと、下が少しマイナスに伸びて隙間が空き、上は枠についてしまいます。下を0ぴったりに、上に4%の余裕をみました。xlab = "成功回数 X", ylab = "確率 P(X)"
それぞれ、x軸とy軸のラベルです。
この段階では、グラフ領域は枠に囲まれていません。作図関数によっては、グラフ領域が枠に囲まれるものもあります。
13行目
グラフ領域を枠で囲みます。
できあがりは、こんな感じです。グラフの大きさによって、x軸の目盛りのラベルの表示が調整されているので、数値の間隔がちょっとおかしいですが、今回は調整しません。
14行目
グラフィックスパラメータを元に戻します。