(Press ?
for help, n
and p
for next and previous slide)
村田 昇
2020.05.22
問題
分析対象の集団の一部のデータのみを用いて, そこから集団全体の性質についての知見を得るには?
問題
ランダム にデータを収集することで課題が解決できる根拠は?
問題
ランダム にデータを収集することで課題が解決できる根拠は?
help(Random)
参照set.seed()
参照sample()
: ランダムサンプリングrbinom()
: 二項乱数runif()
: 一様乱数### 関数sampleの使い方
x <- 1:10 # サンプリング対象の集合をベクトルとして定義
set.seed(123) # 乱数のシード値(任意に決めてよい)を指定
sample(x, 5) # xから5つの要素を重複なしでランダムに抽出
sample(x, length(x)) # xの要素のランダムな並べ替えとなる
sample(x, 5, replace=TRUE) # xから5つの要素を重複ありでランダムに抽出
sample(1:6, 10, replace=TRUE) # サイコロを10回振る実験の再現
sample(1:6, 10, prob=6:1, replace=TRUE) # 出る目の確率に偏りがある場合
[1] 3 10 2 8 6 [1] 5 4 6 8 1 2 3 7 9 10 [1] 9 9 9 3 8 [1] 2 2 1 6 3 4 6 1 3 5 [1] 1 1 2 2 2 1 1 1 2 1
### 関数rbinomの使い方
rbinom(10, size=4, prob=0.5) # 確率0.5に対する次数4の二項乱数を10個発生
rbinom(20, size=4, prob=0.2) # 個数を20, 確率を0.2に変更
### 関数runifの使い方
runif(5, min=-1, max=2) # 区間(-1,2)上の一様乱数を5個発生
runif(5) # 指定しない場合は区間(0,1)が既定値
[1] 3 0 2 3 1 2 1 1 3 3 [1] 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 [1] -0.6665937 -0.2691416 1.0041668 0.2529403 [5] 1.3645875 [1] 0.1028646 0.4348927 0.9849570 0.8930511 0.8864691
### 関数set.seedについて
set.seed(1) # 乱数の初期値をseed=1で指定
runif(5)
set.seed(2) # 乱数の初期値をseed=2で指定
runif(5) # seed=1の場合と異なる結果
set.seed(1) # 乱数の初期値をseed=1で指定
runif(5) # 初めのseed=1の場合と同じ結果
[1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819 [1] 0.1848823 0.7023740 0.5733263 0.1680519 0.9438393 [1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819
計算機上の擬似乱数を利用した数値的解析
などと呼ばれる
replicate()
指定した回数繰り返して関数(プログラム)を評価する
基本書式
replicate(n, expr, simplify = "array")
n
: 繰り返し回数expr
: 評価する関数 (1回の実験に相当)simplify
: 出力の形式を指定replecate()
の例2つのサイコロを振る試行
### 2つのサイコロを振る試行の Monte-Carlo 法
## 試行(1回の実験)を行う関数を用意する
myTrial <- function(){ # この問題では引数は不要
dice <- sample(1:6, 2, replace=TRUE) # 2個のサイコロを振る
return(dice)
}
## 乱数のシード値を指定
set.seed(202005)
## Monte-Carlo法を実行
myData <- replicate(10, # 10回実験
myTrial()) # 実行する関数を指定
print(myData) # 実験結果は行列として保存されている
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 4 3 5 3 1 1 3 6 5 2 [2,] 5 6 2 1 1 1 1 6 1 1
コイン投げの賭け
Alice と Bob の二人で交互にコインを投げる. 最初に表が出た方を勝ちとするとき, それぞれの勝率はいくつとなるか?
の確率シミュレーションを行いなさい.
2次元平面上に等間隔 \(d\) で平行線が引いてある. 長さ \(l\) の針を この平面上にランダムに落としたとき, 平行線と交わる確率はいくつか? ただし \(l\leq d\) とする.
ゲームの参加者の前に閉まった3つのドアがあって, 1つのドアの後ろには景品の新車が, 2つのドアの後ろには外れを意味するヤギがいる. 参加者は新車のドアを当てると新車がもらえる. 参加者が1つのドアを選択した後, 司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せる. ここで参加者は,最初に選んだドアを, 残っているドアに変更してもよいと言われる.
参加者はドアを変更すべきだろうか?
偏りのないコインを表が出るまで投げ続け,賞金を貰うゲームを考える. 表が出るまでにコインを投げた回数が \(n\) 回であるとき, 貰える賞金は \(2^{n}\) 円とする.
このとき賞金の期待値は
\begin{equation} \mathbb{E}[\text{賞金}] =2\times\frac{1}{2} +2^{2}\times\frac{1}{2^{2}} +2^{3}\times\frac{1}{2^{3}} +\dotsb =\infty \end{equation}となるが, ゲームを行う回数が有限であるとき, 期待値はいかなるものになるだろうか?
以下の条件のもと秘書を1人雇うとする.
- \(n\) 人が応募しており \(n\) は既知とする.
- 応募者には \(1\) 位から \(n\) 位まで順位付けできる.
- 無作為な順序で1人ずつ面接を行う.
- 毎回の面接後その応募者を採用するか否かを決定する.
- 不採用にした応募者を後から採用することはできない.
「 \(r-1\) 番までの応募者は採用せず, \(r\) 番以降の応募者でそれまで面接した中で最も良い者を採用する」 という戦略を取るとき,最適な \(r\) はいくつだろうか?