Установка простой модели с EMCEE приводит к ошибке
Я написал следующий код в пакете EMCEE, но после запуска кода Python отправляет ошибку. Мне интересно, что мне делать. Может ли кто-нибудь помочь мне, пожалуйста? Ошибка:
Warning (from warnings module): File "C:\Python36-32\lib\site-packages\emcee\ensemble.py", line 335 lnpdiff = (self.dim - 1.) * np.log(zz) + newlnprob - lnprob0 RuntimeWarning: invalid value encountered in subtract
Warning (from warnings module): File "C:\Python36-32\lib\site-packages\emcee\ensemble.py", line 336 accept = (lnpdiff > np.log(self._random.rand(len(lnpdiff)))) RuntimeWarning: invalid value encountered in greater WARNING:root:Too few points to create valid contours
код:
xx=np.array([0.01,0.012,0.014,0.016,0.019,0.023,0.026,0.031,0.037,0.043,
0.051,0.06,0.07,0.082,0.097,0.114,0.134,0.158,0.186,0.218,
0.257,0.302,0.355,0.418,0.491,0.578,0.679,0.799,0.94,1.105,1.3])
yy=np.array([32.95388698,33.87900347,33.84214074,34.11856704,34.59344598,
34.93902653,35.25209633,35.74850165,36.06978761,36.43457047,
36.65111059,37.15801411,37.43017325,37.95661635,38.25325404,
38.61286934,39.06785071,39.3414019,39.79214362,40.1565346,
40.56495606,40.90528778,41.42141744,41.79092346,42.23146107,
42.61704707,43.05273149,43.50415083,43.97257341,44.51408758,44.82186746])
covsn = pd.read_csv('jlacov.csv', header=None)
cova = covsn.as_matrix(columns=None)
Cov = np.asmatrix(cova)
H0=70
m_mat=0.3
M_t=10
np.random.seed(123)
def ant(z,m):
O_D=1-m
return 1/sqrt(((1+z)**2)*(1+m*z)-z*(2+z)*O_D)
def new_calculation(n):
q=odeint(ant,0,xx[n],args=(m))[0]
h=log10((1+xx[n])*q)
return (yy[n]-M-h)
def log_likelihood(theta):
m, M = theta
f_list = [new_calculation(i) for i in range(31)]
rdag=[f_list]
rmat=[[f] for f in f_list]
mm=np.dot(rdag,Cov)
zz=np.dot(mm,rmat)
hh=np.linalg.det(zz)*0.000001
return hh
def log_prior(theta):
m, M = theta
if 0.1 < m < 0.9 and 0 < M < 15.0 and 0.1 < m+M < 16.0:
return 0.0
return -np.inf
def log_probability(theta):
lp = log_prior(theta)
if not np.isfinite(lp) or np.isnan :
return -np.inf
return lp + log_likelihood(theta)
ndim, nwalkers = 2, 80
pos = np.random.rand(ndim * nwalkers).reshape((nwalkers, ndim))
sampler = emcee.EnsembleSampler(nwalkers, ndim, log_probability)
sampler.run_mcmc(pos, 500);
samples = sampler.chain[:, 50:, :].reshape((-1, ndim))
import corner
fig = corner.corner(samples, labels=["$m$","$M$"], truths=[m_mat, M_t])
from matplotlib import pyplot as plt
plt.plot(sampler.chain[:, 100:, 0].T, color='k', alpha=0.4)
plt.axhline(m_mat, color='gray', lw=2)
plt.xlabel('Step number')
plt.ylabel('m')
plt.show()
ты можешь найти jlacov.csv
файл здесь я ценю вашу помощь и ваше внимание. Я думаю, что я написал правильный код, но я не знаю, что это за ошибки такого рода.