コードはこちらになります。
# -*- coding: utf-8 -*-
import pystan
# karaoke score in last year contest
karaoke = [75, 82, 77, 86, 98, 91, 85, 84, 82, 79,
88, 79, 84, 87, 69, 93, 84, 82, 89, 78,
90, 74, 75, 84, 89, 81, 74, 79, 82, 84]
stan_data = {
"n" : len(karaoke),
"x" : karaoke
}
stan_code = """
data {
int<lower=0> n; # number of data
real<lower=0> x[n]; # vector of karaoke score
}
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> borderline; # 90% percentile
real<lower=0, upper=1> qualifying; # probability of qualifying karaoke contest
borderline <- mu + 1.282 * stdev;
qualifying <- 1 - normal_cdf(borderline, 87, 5);
}
"""
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 82.79 6.1e-3 1.22 80.4 81.97 82.79 83.61 85.18 40000 1.0 stdev 6.64 4.6e-3 0.92 5.13 5.99 6.54 7.18 8.72 40000 1.0 borderline 91.3 8.5e-3 1.71 88.36 90.11 91.17 92.33 95.07 40000 1.0 qualifying 0.21 4.4e-4 0.09 0.05 0.14 0.2 0.27 0.39 40000 1.0 lp__ -64.73 5.0e-3 1.01 -67.42 -65.14 -64.43 -64.01 -63.73 40000 1.00.90分位数EAP推定値は91.3点となりました。事後標準偏差は1.71点です。95%確信区間は88.36点から95.07点です。
平均87点、標準偏差5点の人が本選に進める確率は21%です。

0 件のコメント:
コメントを投稿