統計検定の対策をしてみる with R

## 1. 条件付き確率
### ■ 問題文
> 1 から 3 の目が赤色で塗られており、
> 4 から 6 の目は青色で塗られているサイコロがある。
> このサイコロを投げて青色の目が出た時、
> 出た目が偶数である **確率** を求めよ。

![dice](http://2.bp.blogspot.com/-PboUC2JD87o/WerKigVKvBI/AAAAAAABHo4/hxlNvUur3VIpVcqZg_ZEhJlqga85p36sQCLcBGAs/s800/character_game_dice.png)

### ■ 解答
> 青色の目が出る **事象** を `A`
> 偶数の目が出る **事象** を `B`
> とすると、青色の目が偶数の **確率** は `P(B|A)`
> `P(B|A)` の確率は、`P(A ∩ B) / P(A)`

```R:R-計算編
# P(A ∩ B) を P(A) で除算 → P(B|A)
> U <- c(1,2,3,4,5,6) # 全事象
> A <- c(4,5,6) # 青色
> B <- c(2,4,6) # 偶数
> length(A) / length(U)
[1] 0.5 # P(A) ≈ 1/2
> length(intersect(A,B)) / length(U)
[1] 0.3333333 # P(A ∪ B) ≈ 1/3
> (length(intersect(A,B)) / length(U)) / (length(A) / length(U))
[1] 0.6666667 # P(B|A) ≈ 2/3
```
http://www.r-fiddle.org/#/fiddle?id=SyEpd1Xx

```R:R-ベン図作成編
install.packages("VennDiagram", repos="http://cran.ism.ac.jp/")
library(VennDiagram)
A <- c(4,5,6) # 青色
B <- c(2,4,6) # 偶数
data <- list(A=A,B=B)
venn.diagram(data, filename="conditional_probability_01.svg", imagetype="svg", height=5, width=5, fill=c(4,7), lty=2, scaled=F, cex=c(2,2,2), cat.pos=c(330,30), cat.dist=c(0.05,0.05), cat.cex=c(1.2,1.2))
```
![venn](https://c1.staticflickr.com/5/4517/24665062028_a95d8b95b7_b.jpg)

## 2. 二項分布
### ■ 問題文
> サイコロを 10 回振るとき、6 の目が 6 回出る **確率** を求めよ。

![gamble](http://3.bp.blogspot.com/-z8Ni2EvKGMc/Vf-Zk5btx0I/AAAAAAAAyA4/vjpDhBNakcQ/s400/casino_chip.png)

### ■ 解答
> **二項分布** を用いて算出する。
> 6 の目が出る **確率** は 1/6 のため、
> 6 の目が出る回数を `x` とすると、
> `x` は `B(10, 1/6)` に従う。

```R:R-計算編
# dbinom(成功回数, 試行回数, 成功確率)
> dbinom(6, 10, 1/6)
[1] 0.002170635 # 約0.2% 
```
http://www.r-fiddle.org/#/fiddle?id=w0I5EhOz

```R:R-グラフ描画編
x<-0:10
plot(x,dbinom(x,10,1/6), type="h", lwd=5, col="tomato1", cex.lab=1, cex.main=1.7)
```
http://www.r-fiddle.org/#/fiddle?id=bYmsIshk
![graph](https://c1.staticflickr.com/5/4562/24665479438_7b7b84b736_b.jpg)

## 3. 正規分布の再現性
### ■ 問題文
> 日本人男性2人をランダムに選んで肩車をしてもらった時、
> 身長はどのような分布となるか求めよ。
> ただし、日本人男性の肩までの身長は **正規分布** `N(140cm, 20)`、
> 座高は **正規分布** `N(100cm, 10)` に従うとし、
> 肩車した時の身長は `肩までの身長 + 座高` で計算できるものとする。

![a shoulder ride](http://2.bp.blogspot.com/-g7e7eo3AIH8/WIWLc72z73I/AAAAAAABBR4/yxUpQGcCf_oMRj_kZp873qVWcdSDDosqQCLcB/s800/nenkin_kataguruma.png)

### ■ 解答
> 上側の男性の座高を `X`、下側の男性の肩までの身長を `Y` とすると、 
> 肩車全体の身長は、`X + Y` の分布に従います。
> `X` と `Y` はどちらも **正規分布** に従うことから、
> `X + Y` もまた **正規分布** に従います。

```R:R
> # 座高 : 平均100cmと分散10の正規分布 - N(100, 10)
> curve(dnorm(x, 100, sqrt(10)), 80, 270, col="blue")
> # 肩までの身長 : 平均140cmと分散20の正規分布 - N(140, 20)
> curve(dnorm(x, 140, sqrt(20)), 80, 270, col="red", add=TRUE)
> # 座高 + 肩までの身長 : 平均240cm(100cm + 140cm)と分散30(10 + 20)の正規分布 - N(240, 30)
> curve(dnorm(x, 240, sqrt(30)), 80, 270, col="purple", add=TRUE)
```
http://www.r-fiddle.org/#/fiddle?id=YJnBukwh
![graph](https://c1.staticflickr.com/5/4562/26676590459_254d8377a9_b.jpg)

## 4. 標準正規分布
### ■ 問題 A
> **確率変数** `Z` が **標準正規分布** `N(0, 1)` に従うとき、
> `Z` が 2 以上となる **確率** `P(Z ≥ 2)` を求めよ。

![graph](http://2.bp.blogspot.com/-2ePKnVo4ubw/VXOTvlEJxtI/AAAAAAAAuDg/-OF1k_KjePY/s800/graph10_oresen1.png)

### ■ 解答 A
> **z値** ( **観測統計量** と **母平均** の差 ) から、
> **上側確率** を求めます。


```R:R-計算編
# z 値が 2 の場合の上側確率を算出する
> pnorm(2, lower.tail=F)
[1] 0.02275013 # → 約 2.3%
```
http://www.r-fiddle.org/#/fiddle?id=YPEq5QVp

```R:R-グラフ描画編
# z 値が 2 の場合の上側確率を赤色にする
curve( dnorm(x, mean=0, sd=1), from=-5, to=5 )
n  <- 100
xs <- seq(2, 5, length=n)
ys <- dnorm(xs, mean=0, sd=1)
polygon(c(xs, rev(xs)), c(rep(0,n), rev(ys)), col="red")
```
http://www.r-fiddle.org/#/fiddle?id=v4J6xaVe
![graph2](https://c1.staticflickr.com/5/4583/26677536109_442013f77c_b.jpg)

### ■ 問題 B
> **確率変数** `Z` が **標準正規分布** `N(0, 1)` に従うとき、
> `Z` が `z` 以上となる **確率** `P(Z ≧ z)` が 10% となるような `z` を求めよ

![graph](http://3.bp.blogspot.com/-RRyw9H71whc/VXOTwfUdekI/AAAAAAAAuDo/EiXGwKh3g0M/s800/graph11_oresen2.png)

### ■ 解答 B
> **上側確率** から、
> **z値** ( **観測統計量** と **母平均** の差 ) を求めます。

```R:R-計算編
# 上側確率が 10% の場合の z 値を算出する
> qnorm(0.1, lower.tail=F)
[1] 1.281552 # → 約 1.28
```
http://www.r-fiddle.org/#/fiddle?id=Qy5arCR1

```R:R-グラフ描画編
# 上側確率 10% を青色にし、z 値にオレンジ色の垂線を引く
curve( dnorm(x, mean=0, sd=1), from=-5, to=5 )
z  <- qnorm(0.1, lower.tail=F)
n  <- 100
xs <- seq(z, 5, length=n)
ys <- dnorm(xs, mean=0, sd=1)
polygon(c(xs, rev(xs)), c(rep(0,n), rev(ys)), col="blue")
abline(v = z, col="orange")
```
http://www.r-fiddle.org/#/fiddle?id=pMTXKQgu
![upper-probability-10](https://c1.staticflickr.com/5/4536/38477524331_7498b056e8_b.jpg)

## 関連
- [統計検定 : Japan Statistical Society Certificate](http://www.toukei-kentei.jp/)