Rstanの練習
- ランダムウォークの誤差分散の推定、MA形。
- Rのコード
library("rstan") ep<-rnorm(105, mean=0,sd=1) theta<-(1:1000)^-0.5 y<-NULL for(i in 1:100){ y[i]<-sum(theta[1:(i)]^0*ep[i:1]) } #y<-rpois(100,lambda=30) data <- list(T = 100, y =y,Q=100) fit <- stan(file = 'ma123b.stan', data = data,iter = 1000,chains = 4) print(fit) p<-extract(fit,pars="epsilon") plot(p[[1]][2000,]) p<-extract(fit,pars="sigma") plot(p[[1]][2000,])
- Stanのコード
- 決定論的なところは、パラメータチェンジに書くのがポイント
- ma123b.stan
- yのところが微妙
data{ int<lower=0> Q; int<lower=3> T; real y[T]; } parameters { //real mu; real<lower=0> sigma; //real eta[T]; real epsilon[T]; } transformed parameters{ real eta[T]; //eta<-0; for(t in 1:T){ //y[t]~ normal(0,sigma); eta[t] <- 0.0; //eta[t] ~ normal(0,0.00001); for(q in 1:t){ eta[t] <- eta[t] + epsilon[t - (q-1)]; //eta[t] <- 3; } } } model { for(t in 1:T){ epsilon[t] ~ normal(0,sigma); y[t] ~ normal(eta[t],0.0001); } //y~rnorm(eta,0.0001); //y<-eta }