コードはこちらになります。
# -*- coding: utf-8 -*- import pystan juryo = [128.27, 130.00, 130.68, 128.82, 130.08, 129.24, 129.82, 131.76, 128.19, 131.01, 128.81, 131.53, 129.36, 130.82, 130.89, 130.35, 130.18, 131.00, 131.03, 128.84] stan_data = { "n" : len(juryo), "x" : juryo } stan_code = """ data { int<lower=0> n; # number of data real<lower=0> x[n]; # vector of juryo } parameters { real<lower=0> stdev; # standard deviation } transformed parameters { real<lower=0> stdevsq; # variance stdevsq <- pow(stdev, 2); } model { x ~ normal(130.0, stdev); # normal distribution model } generated quantities { real<lower=0, upper=1> under0; # probability of EAP under 1.5 real<lower=0, upper=1> under1; # probability of EAP under 1.0 under0 <- step(1.5-stdevsq); under1 <- step(1.0-stdevsq); } """ def main(): fit = pystan.stan(model_code=stan_code, data=stan_data, iter=11000, warmup=1000, thin=1, chains=4) print(fit) fit.plot() if __name__ == "__main__": main()
実行結果はこうなりました。
mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat stdev 1.12 9.5e-4 0.19 0.82 0.98 1.09 1.23 1.56 40000 1.0 stdevsq 1.29 2.3e-3 0.46 0.67 0.97 1.2 1.51 2.43 40000 1.0 under0 0.75 2.2e-3 0.44 0.0 0.0 1.0 1.0 1.0 40000 1.0 under1 0.29 2.3e-3 0.45 0.0 0.0 0.0 1.0 1.0 40000 1.0 lp__ -11.41 3.5e-3 0.7 -13.42 -11.57 -11.14 -10.97 -10.92 40000 1.0
分散のEAP推定値は1.29です。この分散の事後標準偏差は0.46です。
1.5以下である確率は75%、1.0以下である確率は29%となりました。
0 件のコメント:
コメントを投稿