这可能是一个愚蠢的问题,但每当我使用.plot()函数时,它会将摘要绘制两次。任何人都知道,为什么会这样做以及如何阻止它?
如你所知,我正在使用jupyter笔记本电脑。
任何stan模型(以及两个单独的安装)都会发生这种情况
此代码会为我带来问题
import pystan
import numpy as np
model_string = """
data {
int<lower=0> N;
int y[N];
}
parameters {
real<lower=0, upper=1> theta;
}
model {
theta ~ beta(1,1);
y ~ bernoulli(theta);
}
"""
N = 50
z = 10
y = np.append(np.repeat(1, z), np.repeat(0, N - z))
dat = {'y':y,
'N':N}
fit = pystan.stan(model_code=model_string, data=dat, iter=1000, warmup=200, thin=1, chains = 3)
fit.plot()
答案 0 :(得分:3)
这是由%matplotlib inline
语句绘制的,而不是您想要的。 StanFit4Model.plot
方法调用matplotlib.pyplot.subplot
,当您的笔记本具有%matplotlib inline
时,该调用本身将绘制一个图表。然后该方法返回Figure
对象。如果你没有捕获它,你的笔记本决定将它作为图像显示给你而不是打印类型,你得到双重图。
您可以通过捕获输出Figure
来输出单个图。从
fit.plot()
改为
fig = fit.plot()
答案 1 :(得分:0)
在.plot()之后加上分号也可以解决问题。