- 帰結が2種類あるときのオプション選択のことを考えた(こちらとか)
- 帰結が3以上種類あるときのオプション選択のことを考えた(こちらとか)
- 自然な流れとして、量的帰結についてのオプション選択を考えたい
- 帰結の分布を観測データからオプション別に思い描いて、その分布に対して評価を下したい
- まずは、帰結分布を描くことにする
- カテゴリカルな帰結の場合は、共役事前分布であるベータ分布・ディリクレ分布を用いた
- 量的な場合には、ガウシアンでの密度推定がよいだろう
- 密度推定するには、平滑化をコントロールする必要があるが、それについては、リスク関数の最小化など、よく使うもの(Rのdensity()関数でのデフォルト)を決め打ちにしてみることにする
true.prob <- list()
true.prob[[1]] <- matrix(c(1,1,0.1,10,2,0.9),byrow=TRUE,ncol=3)
true.prob[[2]] <- matrix(c(2,1,1),byrow=TRUE,ncol=3)
n.iter <- 1000
N <- 100
history.option <- rep(NA,n.iter)
history.value <- rep(NA,n.iter)
for(i in 1:n.iter){
yamikumo <- FALSE
if(i ==1 ){
yamikumo <- TRUE
}else{
if(length(which(history.option[1:(i-1)]==1)) < 2 || length(which(history.option[1:(i-1)]==2)) <2){
yamikumo <- TRUE
}
}
if(yamikumo){
s <- sample(1:2,1)
history.option[i] <- s
tmp.row <- sample(1:length(true.prob[[s]][,1]),1,prob=true.prob[[s]][,3])
history.value[i] <- rnorm(1,true.prob[[s]][tmp.row,1],true.prob[[s]][tmp.row,2])
}else{
ones <- which(history.option ==1)
twos <- which(history.option ==2)
fr <- min(history.value[1:(i-1)])
to <- max(history.value[1:(i-1)])
fr2 <- fr-(to-fr)/2
to2 <- to+(to-fr)/2
d1 <- density(history.value[ones],from = fr2,to = to2)
d2 <- density(history.value[twos],from = fr2,to = to2)
ylim <- c(0,max(d1$y,d2$y))
par(mfcol=c(1,1))
plot(d1,ylim = ylim)
par(new=TRUE)
plot(d2,col=2,ylim=ylim)
R1 <- sample(ones,N,replace=TRUE)
R2 <- sample(twos,N,replace=TRUE)
r1 <- rep(NA,N)
r2 <- rep(NA,N)
for(j in 1:N){
r1[j] <- rnorm(1,history.value[R1[j]],d1$bw)
r2[j] <- rnorm(1,history.value[R2[j]],d2$bw)
}
p <- length(which(r1>r2))/N
if(runif(1)<p){
s <- 1
}else{
s <- 2
}
history.option[i] <- s
tmp.row <- sample(1:length(true.prob[[s]][,1]),1,prob=true.prob[[s]][,3])
history.value[i] <- rnorm(1,true.prob[[s]][tmp.row,1],true.prob[[s]][tmp.row,2])
}
}
plot(history.value, col = history.option)