- 考え方は1950年代に遡るが、同時並行でたくさんのデータ解析を行うようになって実問題に適用されるにいたった。その最初の適用対象がマイクロアレイ・体系的発現解析
- (ベイズ)推定なのか、検定なのかの区別なども問題になる
- 1.1 ベイズ規則と多変量正規分布推定
- N個が正規分布からのサンプルであるときに、それを同時に観察したときに、それぞれの観測値から、それぞれの元の値を推定しましょう、という話
- 平均0,分散Aの正規分布に従っているからサンプリングして、平均0分散1の正規乱数誤差で観測してzを得るとき、zの値から元のを推定すると、平均,分散()の正規分布になる
N <- 10000
A <- runif(1)*10
B <- A/(A+1)
mu <- rnorm(N,0,sqrt(A))
z <- mu + rnorm(N,0,1)
w <- rnorm(N,0,1)
w <- w*sqrt(B)
w <- w + B*z
plot(mu,z,xlim=range(c(mu,w)),ylim=range(z),cex=0.1,pch=20)
points(w,z,col=2,cex=0.1,pch=20)
-
- 最尤推定値はそのものであるのに対し、ベイズ推定値は
- どちらの推定がよいかは、推定値と真値の差の二乗を全サンプルの和で評価してもよいだろう(リスク関数をそのように定める、ということ)
- 最尤推定値の場合は、個々のサンプルで観測誤差を分散1の正規分布としているから、リスク関数の値(の期待値)は
- ベイズ推定の方はになる
- ベイズ推定の方が小さくなる…ただし、がいくつかわからなければもわからないわけで、を事前情報として与える、という条件付きであるが
- 1.2 Empirical Bayes Estimation
- を知りたい
- たくさんのデータがあれば、推定はできる
- 実際、なので、の推定値がほしい
- 観察値のばらつきは、真値のばらつきと観察誤差のばらつきの和になっているから、観察値のばらつき具合から真値のばらつきを推定してやる
- 正規分布を仮定しているから、観察値の普遍分散を出して…とやってもよさそうなところだが、テキストでは、二乗和を出して、それが自由度Nのカイ二乗分布様に従うことを使って推定している
- 実際、の推定値はとなる
A <- runif(1)*10
N <- 100
n.trial <- 10000
SS <- rep(0,n.trial)
for(i in 1:n.trial){
mu <- rnorm(N,0,sqrt(A))
z <- mu + rnorm(N,0,1)
S <- sum(z^2)
SS[i] <- S
A.mean[i] <- S/N -1
A.median[i] <- S/(N-2)-1
}
A+1
mean(SS/N)
1/(A+1)
mean((N-2)/SS)
A+1
mean(SS/N)
mean(SS/(N-1))
mean(SS/(N-2))
1/(A+1)
mean(N/SS)
mean((N-1)/SS)
mean((N-2)/SS)
> A+1
[1] 7.734166
>
> mean(SS/N)
[1] 7.731988
> mean(SS/(N-1))
[1] 7.810089
> mean(SS/(N-2))
[1] 7.889784
>
>
> 1/(A+1)
[1] 0.1292964
> mean(N/SS)
[1] 0.1319799
> mean((N-1)/SS)
[1] 0.1306601
> mean((N-2)/SS)
[1] 0.1293403
-
- これを使ったがJames-Stein 推定量
- JS推定量を使って、真値からのずれを評価した値(リスク関数の値)を計算すれば、「真のA」が与えられた場合よりは大きくなる(けれど、それは仕方ない)
- 共通の分布からのサンプルについて、たくさん()のテストがあるときは個々の最尤推定量よりJS推定量を採用する方が、「全体のずれ」を小さくできる
- ここまでの議論ではが0としてきたけれど、そうでない場合にもあてはまることを示すのは簡単
my.JS.estimate <- function(x){
m <- mean(x)
#A1 <- (length(x)-2)/sum((x-m)^2)
A1 <- (length(x)-3)/sum((x-m)^2)
y <- (1-A1)*(x-m) +m
return(y)
}
- 1.3 Estimating the Individual Components
- こんなにすごいのに、それほど使用されてこなかったのは、当てはまりの良しあしを「全て」の総合計で判断する方法であるので、個々のずれが大きくなる場合が出たことに(も)よる。外れ値がそれに影響する。
- 結構適当なデータに対してJS推定値を出してみよう
N <- 100
N2 <- 50
A <- 4
A2 <- 6
mu <- rnorm(N,3,sqrt(A))
z <- mu + rnorm(N,0,1)
mu2 <- rexp(N,1)+3
z2 <- mu2 + rnorm(N,0,2)
mus <- c(mu,mu2)
zs <- c(z,z2)
JSs <- my.JS.estimate(zs)
sum((zs-mus)^2)
sum((JSs-mus)^2)
plot(mus,zs)
points(mus,JSs,col=2)
- 1.4 Learning from the Experience of Others
- ある特定のサンプルの推定をするに際して、他のサンプルのデータを使いながら(それに基づいた推定をする)、という意味でベイズ
- 他のサンプルのすべてを利用するか一部を利用するか、一部にするなら、どうやって選ぶか、ということを問題にすることもできる
- 1.5 Empirical Bayes Confidence Intervals