【发布时间】:2021-05-02 10:01:53
【问题描述】:
我正在尝试对依赖于T 和参数xi、mu、sig 的方程进行建模。
我已经推断出不同持续时间(1 小时、3 小时等)的参数和这些参数的分布(标准偏差)。在示例代码中,参数的持续时间为 1 小时。
我需要创建一个 forloop 来创建一个包含 xi、mu 和 sig 数组的 zp 云。 T可以取的不同值是[2, 5, 25, 50, 75, 100]
我还想在第 2 行中显示带有标准偏差的误差线或不确定性。我使用 Metropolis Hastings 算法探索参数空间,在 3 个链中进行了 15000 次迭代
xi = accepted[0:]
xi = array([[-2.00000000e-01, 1.00000000e-01, 1.00000000e-01],
[-2.06044711e-01, 1.51739593e-01, 1.36675069e-01],
[-2.91747418e-01, 1.10818827e-01, 1.80040639e-01],
...,
[ 1.45611857e-02, 1.46824099e+01, 5.16110127e+00],
[ 1.45611857e-02, 1.46824099e+01, 5.16110127e+00],
[-3.14226453e-02, 1.44844410e+01, 5.00637147e+00]])
mu = accepted[1:]
mu = array([[-2.06044711e-01, 1.51739593e-01, 1.36675069e-01],
[-2.91747418e-01, 1.10818827e-01, 1.80040639e-01],
[-2.91747418e-01, 1.10818827e-01, 1.80040639e-01],
...,
[ 1.45611857e-02, 1.46824099e+01, 5.16110127e+00],
[ 1.45611857e-02, 1.46824099e+01, 5.16110127e+00],
[-3.14226453e-02, 1.44844410e+01, 5.00637147e+00]])
sig = accepted [2:]
sig = array([[-2.91747418e-01, 1.10818827e-01, 1.80040639e-01],
[-2.91747418e-01, 1.10818827e-01, 1.80040639e-01],
[-2.91747418e-01, 1.10818827e-01, 1.80040639e-01],
...,
[ 1.45611857e-02, 1.46824099e+01, 5.16110127e+00],
[ 1.45611857e-02, 1.46824099e+01, 5.16110127e+00],
[-3.14226453e-02, 1.44844410e+01, 5.00637147e+00]])
spread = accepted[:,0].std(), accepted[:,1].std(), accepted[:,2].std()
(xi, mu, sig)
def zp(T, xi = accepted[0:], mu = accepted[1:], sig= accepted[2:]):
p = 1/T
yp = - np.log10(1 - p)
zp = np.ndarray(shape=(xi.size, T.size))
for i in range(xi.size):
if xi[i] == 0:
zp[i,:] = mu[i] - (sig[i]*(np.log10(yp)))
else:
zp[i,:] = mu[i] - ((sig[i]/xi[i])*(1-(yp**(-xi[i]))))
return zp
# get results
res = zp(T, xi, mu, sig)
【问题讨论】:
标签: python matplotlib data-analysis errorbar