, という系列を考える。Aは定数。
(この系列になんらかの解釈があればおもしろかったんだけど思いつかなかった。)
いま、観測されるのは のみである。
が既知ならば Aを推定するのはかんたん。Aが既知ならば を推定するのはかんたん。
しかし、いま観測されるのは のみ。
が になる組み合わせは無数にあり、と Aを同時に推定するのは困難に思える。
しかし、以下の仮定を置くことで、と Aを推定することができる。
推定に用いた Stan のコードはこう。
#inverse.stan data{ int<lower=0> N; real <lower=0>y[N];} parameters{ real <lower=0,upper=1> p[N]; real <lower=0>sigma; real <lower=0>A;} transformed parameters { real mu1[N];for(i in1:N){ mu1[i]<- p[i]*A;}} model{for(i in1:N){ y[i]~ normal(mu1[i], sigma);}}
R のコードはこう。
##データ生成## set.seed(123) p <- runif(20) A <-100 y <- rnorm(20,p*A) plot(y,type="b") dat4stan <-list(N=20,y=y)############ model1 <- stan_model("inverse.stan") fit <- sampling(model1, data=dat4stan) traceplot(fit,pars=c("A","sigma")) ex<-extract(fit)##図示## plot(y,type="b") lines(apply(ex$mu,2,mean),col="orange") plot(p,apply(ex$p,2,mean),xlim=c(0,1),ylim=c(0,1),ylab="estimates") abline(0,1,lty=2)
Aと σについて、MCMCサンプリングのトレースラインを描いてみる。収束してくれたようだ。
次に、原系列(黒)と推定値(オレンジ)を重ねてみる。
最後に、横軸に乱数で生成した真の 、縦軸に の推定値をとりプロットした。
ほぼ一直線上に並んでいることから、の推定値の妥当さが分かる。
しかしなんでこれが求まってしまうんだろう……?