【zansa】第17回 ブートストラップ法入門

31
ブートストラップ法入門 @ksmzn 17 Zansa 27 Novenber 2013 1 / 31

Upload: zansa

Post on 27-Jun-2015

6.492 views

Category:

Technology


2 download

DESCRIPTION

Zansa 第17回 2013/11/27 の資料 『ブートストラップ法入門』@ksmzn

TRANSCRIPT

Page 1: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ法入門

@ksmzn

第 17 回 Zansa

27 Novenber 2013

1 / 31

Page 2: 【Zansa】第17回 ブートストラップ法入門

誰か

Twiiter : @ksmzn

専門 : 計算機統計

2 / 31

Page 3: 【Zansa】第17回 ブートストラップ法入門

本日のテーマは!

3 / 31

Page 4: 【Zansa】第17回 ブートストラップ法入門

4 / 31

Page 5: 【Zansa】第17回 ブートストラップ法入門

ではなく!

5 / 31

Page 6: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ法!!

6 / 31

Page 7: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ法とは?

ブートストラップ法(Bootstrap Method)とは、n 個の標本 x1, x2, ..., xnから繰り返しを許してランダムに n 個の標本をB組選び、平均や分散などパラメータの推定値を繰り返し求め、その分布からパラメータの確率分布や誤差を推定する方法

7 / 31

Page 8: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ法とは

とにかくやってみよう!!

8 / 31

Page 9: 【Zansa】第17回 ブートストラップ法入門

前提

ターゲットは、統計量の標本分布!定義

F :未知の確率分布θ : F に関する興味あるパラメータθ = T (F )で表されるとするFn : 既知の経験分布関数F から抽出された n個の標本Xで構成されるθn : θの推定値として用いる統計量θn = T (FN)で表されるθnはサンプリングのたびに変動するので、θnは分布Gnを持つ。(θn ∼ Gn)

9 / 31

Page 10: 【Zansa】第17回 ブートストラップ法入門

かんたんな例で考えよう!

10 / 31

Page 11: 【Zansa】第17回 ブートストラップ法入門

簡単な例

平均を求める場合

F :未知の確率分布µ : F の平均を知りたい。µ = T (F ) = EF [X]

x = {12, 15, 16, 17, 19, 20, 22, 23, 25, 28}F から抽出された 10個の標本Fn : 既知の経験分布関数10個の標本 xで構成されるµn : µの推定値として用いる統計量µn = T (Fn) =

1n

∑ni=1 xi = 19.7

µnはサンプリングのたびに変動するので、µnは分布Gnを持つ。(µn ∼ Gn)

11 / 31

Page 12: 【Zansa】第17回 ブートストラップ法入門

経験分布関数Fn

n個の標本x1, x2, ..., xnを大きい順に x(1), x(2), ..., x(n)と並べ替え、各点に等確率 1

n を与えた分布

赤:真の分布関数 黒:経験分布関数(n = 40)

12 / 31

Page 13: 【Zansa】第17回 ブートストラップ法入門

リサンプリング

この経験分布関数Fnからさらにサンプリングする!

→ xから復元抽出する!

13 / 31

Page 14: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ標本の例

n = 10の標本

x = {12, 15, 16, 17, 19, 20, 22, 23, 25, 28}

から 10個 復元抽出してみる

x∗(1) = {20, 19, 20, 23, 19, 28, 23, 28, 17, 25}

もう一度 10個 復元抽出してみる

x∗(2) = {15, 23, 12, 17, 23, 25, 16, 22, 25, 25}

14 / 31

Page 15: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ標本

この経験分布関数Fnからのランダムサンプリングをブートストラップ標本という。x1, x2, ..., xnからn個を復元抽出して得たx∗ = {x∗1, x∗2, ..., x∗n}で構成した経験分布関数をF ∗

nとする

15 / 31

Page 16: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ標本の平均をとってみる

もとの標本の平均

x = {12, 15, 16, 17, 19, 20, 22, 23, 25, 28}

→ µn = 1n

∑ni=1 xi = 19.7

x∗(1) = {20, 19, 20, 23, 19, 28, 23, 28, 17, 25}

→ µ∗1 =

1n

∑ni=1 x

∗i (1) = 22.2

x∗(2) = {15, 23, 12, 17, 23, 25, 16, 22, 25, 25}

→ µ∗2 =

1n

∑ni=1 x

∗i (2) = 20.3

16 / 31

Page 17: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ推定量の分布

µ∗1 = 22.2, µ∗

2 = 20.3, µ∗3 = 19.5, ...

ブートストラップ標本を取るたびにその平均値が変わるので、ブートストラップ推定量µ∗は分布G∗

nをもつ。

ブートストラップ標本の平均をB = 2000回作って、ヒストグラムを作ってみよう!!

17 / 31

Page 18: 【Zansa】第17回 ブートストラップ法入門

Mathematica code

bootstrap[func_ , dat_ , num_] :=

Table[func[RandomChoice[dat , Length[dat]]], {i, num}]

data = {12, 15, 16, 17, 19, 20, 22, 23, 25, 28};

boot = bootstrap[Mean , data , 2000];

Histogram[boot , Automatic]

In [289]:= N[Mean[boot]]

Out [289]= 19.6897

16 18 20 22 24 26

50

100

150

200

250

300

18 / 31

Page 19: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ法の流れ

1 母集団F から大きさnの標本を抽出する2 標本から興味のあるパラメータ θnを求める3 標本から復元抽出をB回繰り返してブートストラップ標本をつくる

4 それぞれのブートストラップ推定値を求め、バイアスや信頼区間を求める

19 / 31

Page 20: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ法の考え方

ブートストラップ法は以下のような置き換えをしている

未知の確率分布 F ⇒ 経験分布関数 Fn

F に関する θ = T (F ) ⇒ Fnに関する θn = T (Fn)

推定量 θn = T (Fn) ⇒ ブートストラップ推定量の分布Gn θ∗n = T (F ∗

n)の分布G∗n

未知のF から標本を何度も抽出できないので、既知のFnからサンプリングしている。

20 / 31

Page 21: 【Zansa】第17回 ブートストラップ法入門

適用例

ガンマ分布Γ(α, β)のパラメータを推定してみよう!

21 / 31

Page 22: 【Zansa】第17回 ブートストラップ法入門

ガンマ分布

ガンマ分布 Γ(5, 2)から標本を抽出して、パラメータ推定をしてみる

5 10 15 20 25 30

0.02

0.04

0.06

0.08

22 / 31

Page 23: 【Zansa】第17回 ブートストラップ法入門

標本を抽出

Γ(5, 2)から標本を 30個抽出して、パラメータを最尤推定してみるIn [304]:= dat = RandomReal[GammaDistribution [5, 2], 30];

edist = FindDistributionParameters[dat ,

GammaDistribution[α, β]]

Out [305]= {α -> 7.05494 , β -> 1.41704}

_人人人人人人人人_> ぜんぜん違う <‾Y^Y^Y^Y^Y^Y^Y‾

23 / 31

Page 24: 【Zansa】第17回 ブートストラップ法入門

パラメータの最尤推定値の分布

試しに、30個の標本を 1000組取り出し、最尤推定値の分布を見てみる

4 6 8 10 12 14

50

100

150

α : 平均 5.46133分散 2.05054

1.0 1.5 2.0 2.5 3.0 3.5 4.0

50

100

150

β : 平均 1.94222分散 0.247136

24 / 31

Page 25: 【Zansa】第17回 ブートストラップ法入門

このように母集団から何度もサンプリングできればよいが、現実的には難しい。

ブートストラップ標本をとろう!

25 / 31

Page 26: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ推定量

ブートストラップ標本を 2000組抽出し、パラメータを推定してみる。

In [432]:=

Fgamma[dat_] :=

FindDistributionParameters[dat ,

GammaDistribution[α, β]]boot = bootstrap[Fgamma , dat , 2000];

Mean[boot[[All , All , 2]]]

Out [434]={7.95611 , 1.34972}

↑ 2000組のブートストラップ推定値 α, β の平均

26 / 31

Page 27: 【Zansa】第17回 ブートストラップ法入門

バイアスの計算

推定の誤差を捉えるため、バイアスを計算してみる

推定量 θnのバイアス

b(Fn) = EFn(θ∗n)− θn

≈ 1

B

B∑b=1

θ∗n(b)− θn

In [443]:= nvalue = Fgamma[dat]

bias = Mean[boot[[All , All , 2]]] - nvalue [[All , 2]]

Out [443]= {0.901169 , -0.067321}

αのバイアスが 0.901169, βのバイアスが−0.067321となった

27 / 31

Page 28: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ推定量をバイアスで修正

ブートストラップ偏り修正済推定量

θ̃ = θn − b(Fn)

= 2θn − EFn(θ∗n)

In [443]:= nvalue [[All , 2]] - bias

Out [444]= {6.15377 , 1.48436}

偏り修正済推定量は、(α, β) = (6.15377, 1.48436)となった

28 / 31

Page 29: 【Zansa】第17回 ブートストラップ法入門

ブートストラップ偏り修正済推定量の分布偏り修正済推定量temp = Table[dat = RandomReal[GammaDistribution [5, 2], 30];

boot = bootstrap[Fgamma , dat , 100];

nvalue = Fgamma[dat];

bias = Mean[boot[[All , All , 2]]] - nvalue [[All , 2]];

nvalue [[All , 2]] - bias , {i, 100}];

3 4 5 6 7 8 9 10

10

20

30

40

α : 平均 4.98765分散 1.38136

1.0 1.5 2.0 2.5 3.0

10

20

30

40

β : 平均 1.96953分散 0.203531

29 / 31

Page 30: 【Zansa】第17回 ブートストラップ法入門

まとめ

ブートストラップ法は、標本から多数回リサンプリングを行いパラメータを推定する未知の確率分布を既知の経験分布に置き換える母集団がわからない場合でも、計算機におまかせ統計量の偏り(や分散、パラメータに対する信頼区間)を構成できる

30 / 31

Page 31: 【Zansa】第17回 ブートストラップ法入門

ありがとうございました。

31 / 31