# −−−−−−−−−−−−−−−−−
# 【データからの無作為サンプリング】
# −−−−−−−−−−−−−−−−−

data <- c(0,1,2,3,4,5,6,7,8,9)
  #10個の整数0〜9をデータとする

sample(data, 10, replace=T) 
##  [1] 5 7 9 0 5 8 6 6 1 1
  # data から重複を許して10個を再抽出(ブーツストラップ)
  # 試行を反復するたびに数列にばらつきが生じる

sample(data, 9, replace=F) 
## [1] 8 9 5 0 1 2 3 6 4
  # data から重複を許さず9個を再抽出(ジャックナイフ)
  # 試行を反復するたびに数列にばらつきが生じる


# −−−−−−−−−−−−−−−−−−
# 【正規分布からの無作為サンプリング】
# −−−−−−−−−−−−−−−−−−

normal.data<- rnorm(10000, mean=0, sd=1); 
hist(normal.data, freq=F);
x <- seq(-4,4,0.05);
curve(dnorm(x, mean=0, sd=1), add=T);

mean(normal.data)
## [1] -0.003350634
  # 標準正規分布 N(0,1) から10,000個の乱数を抽出し
  # ヒストグラムと N(0,1) を描画して標本平均を求める
  # 反復ごとに標本平均はばらつく.

multisample1 <- numeric(100);
for (i in 1:100) multisample1[i] <- 
  + mean(rnorm(100, mean=0, sd=1));
hist(multisample1, freq=F); var(multisample1); sd(multisample1)

## [1] 0.01011974
## [1] 0.1005969
  # 正規母集団から毎回100個の正規乱数を抽出し,
  # 標本平均を求めるという試行を100回反復し,
  # 標本平均のヒストグラムを描画し,分散と標準偏差を計算する.

multisample2 <- numeric(100);
for (i in 1:100) multisample2[i] <- 
  + mean(rnorm(1000, mean=0, sd=1));
hist(multisample2, freq=F); var(multisample2); sd(multisample2)

## [1] 0.001052704
## [1] 0.03244541
  # 正規母集団から毎回1,000個の正規乱数を抽出し,
  # 標本平均を求めるという試行を100回反復し,
  # 標本平均のヒストグラムを描画し,分散と標準偏差を計算する.

multisample3 <- numeric(100);
for (i in 1:100) multisample3[i] <- 
  + mean(rnorm(10000, mean=0, sd=1));
hist(multisample3, freq=F); var(multisample3); sd(multisample3)

## [1] 8.167801e-05
## [1] 0.009037589
  # 正規母集団から毎回10,000個の正規乱数を抽出し,
  # 標本平均を求めるという試行を100回反復し,
  # 標本平均のヒストグラムを描画し,分散と標準偏差を計算する.

multisample4 <- numeric(100);
for (i in 1:100) multisample4[i] <- 
  + mean(rnorm(100000, mean=0, sd=1));
hist(multisample4, freq=F); var(multisample4); sd(multisample4)

## [1] 9.354947e-06
## [1] 0.003058586
  # 正規母集団から毎回100,000個の正規乱数を抽出し,
  # 標本平均を求めるという試行を100回反復し,
  # 標本平均のヒストグラムを描画し,分散と標準偏差を計算する.

# −−−−−−−−−−−−−−−−−−−
# 【正規乱数データからのリサンプリング】
# −−−−−−−−−−−−−−−−−−−

normal.data<- rnorm(10000, mean=0, sd=1);
hist(normal.data, freq=F);