> sample(c("A","B","C"),10,rep=T)
[1] "B" "A" "A" "A" "A" "A" "C" "B" "B" "B"
sample(x, size, replace = FALSE, prob = NULL)
xの成分が、でたらめにsize個並んだベクトルが返ります。
replaceはxの成分を繰り返し使うかどうかの指定で、省略するとFALSEすなわち、繰り返しなしとなりますから、sizeはlength(x)以下である必要があります。上の例では、rep=Tとしてあります。繰り返しを許すので、個数はいくつでもよくなります。replaceはrepと省略しました。誤解のない範囲で省略できますが、この辺のことはまた後日。
> x=sample(1:6,100,rep=T) > x [1] 6 2 2 4 6 1 3 4 2 1 4 1 2 2 5 4 2 3 2 3 6 6 5 4 3 3 1 [28] 3 5 5 4 2 2 6 2 6 4 2 5 4 1 6 2 4 2 4 3 1 2 3 3 5 4 3 [55] 6 6 1 3 1 3 5 1 3 6 5 5 5 4 1 5 3 3 5 5 3 5 6 1 3 4 6 [82] 3 6 1 4 1 1 6 6 5 4 3 4 2 1 1 1 4 6 4
> table(x) x 1 2 3 4 5 6 17 15 19 18 15 16
> hist(x)
ヒストグラムです。階級はRが自動調整しますが、今回はその自動調整が裏目に出ています。感覚的にとらえるにはグラフを描かせることが有効です。
> mean(x) [1] 3.47
さいころ2個の目の和の分布です。
> y=sample(1:6,100,rep=T)+sample(1:6,100,rep=T) > table(y) y 2 3 4 5 6 7 8 9 10 11 12 3 9 10 7 11 23 9 13 7 4 4 > hist(y) > mean(y) [1] 6.86
さいころを100回振って平均を出すということを、何回も繰り返してみます。
> mean(sample(1:6,100,rep=T)) [1] 3.66 > replicate(10,mean(sample(1:6,100,rep=T))) [1] 3.46 3.19 3.17 3.58 3.71 3.44 3.39 3.41 3.48 3.61 > d=replicate(1000,mean(sample(1:6,100,rep=T))) > hist(d)
次は、それを10回繰り返しました。replicate(回数,命令)で命令を回数繰り返します。
その次は、繰り返しを1000回にして、その結果を変数dに代入しました。 最後にヒストグラムを描きました。
おおかた平均は3.5近辺になりますが、3以下から4まで、分布していることがわかります。ちょうど3.5にはならないのです。これが現実というものです。100回振ってもこれだけ幅があるのです。
問題1 コインを投げることをシミュレーションします。コインを100回投げ、表は"H"、裏は"T"として、結果を文字列ベクトル s としなさい。表裏はHead Tail といいます。
問題2 表が裏の2倍出やすいコインをシミュレーションするにはどうしますか?
問題3 普通のコインを5枚投げて、表の出る回数を数えてください。
(文字列ベクトルに対して=="H"でHかどうかがわかります。sumで総和をとります。)
問題4 問題3を1000回繰り返し、5枚投げたときの表の回数の分布を調べてください。
0 件のコメント:
コメントを投稿