0

我正在使用 GetDist 获取 emcee 链的 sigma 区域限制,但是使用 getLatex 或 getMrgeStats 时存在差异,如下图所示

from getdist import plots, MCSamples
import getdist
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('Agg')
import numpy as np
import pandas as pd
import os

dataLinear3= pd.read_csv('Z:/Emcee-txt/NFWN-test-2000/D564-8-NFWN-test-2000.txt', sep=" ", header=None)

samplesLinear3= MCSamples(samples=dataLinear3.values, names = ["c200", "v200", "YD", "df2", "Dinc"], labels = ["c200", "v200", "YD", "df2", "Dinc"])

print(samplesLinear3.getLatex('v200', limit=1))

print(samplesLinear3.getMargeStats())

我得到的结果是这个

WARNING:root:auto bandwidth for v200 very small or failed (h=0.0004953006934052605,N_eff=400000.0). Using fallback (h=0.0007803237654419371)
WARNING:root:auto bandwidth for Dinc very small or failed (h=0.0006469540251945599,N_eff=400000.0). Using fallback (h=0.009704431722802847)
v200 = 29.9^{-2.7}_{-13}
Marginalized limits: 0.68; 0.95; 0.99

parameter   mean           sddev          lower1         upper1         limit1 lower2         upper2         limit2 lower3         upper3         limit3 
c200        1.2605402E+01  2.2423513E+00  1.0292438E+01  1.4709819E+01  two    8.0963362E+00  1.6989101E+01  two    7.3041930E+00  1.8964352E+01  two     c200
v200        2.9856206E+01  3.5670492E+01  1.6813578E+01  2.7134765E+01  two    1.3669652E+01  5.3057035E+01  two    1.1871684E+01  4.9391966E+02  two     v200
YD          5.5495389E-01  1.3104068E-01  4.0381336E-01  6.4856832E-01  two    3.2252391E-01  8.1607559E-01  two    2.9936085E-01  9.9041064E-01  two     YD
df2         1.0009295E+00  3.2297285E-02  9.6876908E-01  1.0331987E+00  two    9.3761917E-01  1.0640009E+00  two    9.1721752E-01  1.0839552E+00  two     df2
Dinc        1.8242395E-01  7.0756583E+00 -6.8120160E+00  7.1848463E+00  two   -1.3650158E+01  1.4244292E+01  two   -1.8072633E+01  1.8416404E+01  two     Dinc

但是 68% 区域的两个限制都低于 v200 参数给出的平均值,我想知道是否有办法解决给出的警告,即这是否与链本身更相关。

4

0 回答 0