コードはこちらになります。
# -*- coding: utf-8 -*- import pystan uriage = [76230, 73550, 80750, 71500, 75420, 74840, 71580, 76920, 68450, 76990, 64070, 76200] stan_data = { "n" : len(uriage), "x" : uriage } stan_code = """ data { int<lower=0> n; # number of data real<lower=0> x[n]; # vector of uriage } parameters { real<lower=0> mu; # mean real<lower=0> stdev; # standard deviation } model { x ~ normal(mu, stdev); # normal distribution model } generated quantities { real<lower=0, upper=1> over0; # probability of EAP over 70k JPY real<lower=0, upper=1> over1; # probability of EAP over 75k JPY over0 <- step(mu-70000); over1 <- step(mu-75000); } """ 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 mu 7.4e4 7.53 1506.7 7.1e4 7.3e4 7.4e4 7.5e4 7.7e4 40000 1.0 stdev 5041.7 6.26 1252.8 3274.0 4166.7 4829.6 5655.0 8089.9 40000 1.0 over0 0.99 4.2e-4 0.08 1.0 1.0 1.0 1.0 1.0 40000 1.0 over1 0.21 2.0e-3 0.41 0.0 0.0 0.0 0.0 1.0 40000 1.0 lp__ -87.76 5.4e-3 1.08 -90.63 -88.18 -87.43 -86.99 -86.71 40000 1.0EAP推定値は74,000円となりました。事後標準偏差は1,506円です。95%確信区間は71,000円から77,000円です。
70,000円を超える確率は99%です。
75,000円を超える確率は21%です。
0 件のコメント:
コメントを投稿