poisson_conf_interval#
- astropy.stats.poisson_conf_interval(n, interval='root-n', sigma=1, background=0, confidence_level=None)[源代码]#
在给定观测计数的情况下,泊松参数可信区间。
- 参数:
- n :
int
或numpy.ndarray
PYTHON:int或numpy.ndarray 计数数(0<=
n
)- interval{'root-n','root-n-0','pearson','sherpagehrels','frequentist-confidence','kraft burrows nousek',可选
用于置信区间的公式。有关详细信息,请参见注释。默认为
'root-n'
.- sigma :
float
,可选Python:Float,可选 置信区间的西格玛数;仅支持“frequentist confidence”模式。
- background :
float
,可选Python:Float,可选 背景中预期的计数数;仅支持“kraft burrows nousek”模式。假设这个数字是从一个大区域确定的,因此其值的不确定性可以忽略不计。
- confidence_level :
float
,可选Python:Float,可选 置信水平介于0和1之间;仅支持“kraft burrows nousek”模式。
- n :
- 返回:
- conf_interval :
ndarray
恩达雷 conf_interval[0]
和conf_interval[1]
分别对应于中每个元素的下限和上限n
.
- conf_interval :
笔记
泊松数据的“正确”可信区间是一个有争议的问题。CDF工作组 recommends 从头到尾都使用根-n,主要是为了便于理解,但也讨论了其他可能性。ATLAS小组还讨论了几种可能性,但得出的结论是,没有一种表示法适用于所有情况。这一建议也是 floated 误差条应该附加到理论预测,而不是观测数据,而这个函数对此没有帮助(但它很容易;那么你真的应该使用理论预测的平方根)。
此处实施的间隔时间为:
1. 'root-n' 这是一个非常广泛使用的标准规则,从泊松过程平均值的最大似然估计量中导出。虽然它对小n产生了可疑的结果,对于n=0则产生了完全错误的结果,但它已经足够标准了,人们(应该)习惯于解释这些不可靠的值。间隔时间是
\[CI=(n-\sqrt{n},n+\sqrt{n})\]2. 'root-n-0' 这与上面的相同,除了n为零时返回的间隔是(0,1)。
3. 'pearson' 这是一个基于皮尔逊卡方法则的稍微复杂一点的法则(如 explained 由CDF工作组提供)。它还有一个很好的特点,如果你的理论曲线触及区间的一个终点,那么你的数据点确实是一西格玛差。间隔时间为
\[CI=(n+0.5-\sqrt{n+0.25},n+0.5+\sqrt{n+0.25})\]4. 'sherpagehrels' 默认情况下,该规则在配件包‘sherpa’中使用。这个 documentation 声称它是基于在 Gehrels (1986) 但它实际上并没有出现在那里。它是对称的,虽然上限在“频率信任度”给出的上限的1%以内,但下限可能是严重错误的。间隔时间为
\[CI=(n-1-\sqrt{n+0.75},n+1+\sqrt{n+0.75})\]5. 'frequentist-confidence' 这些是频率中心置信区间:
\[CI=(0.5f{\chi^2}^{-1}(\alpha;2n),\]在哪里? \(F_{{\chi^2}}^{{-1}}\) 是卡平方分布的分位数,表示自由度和 \(\alpha\) 是正态分布的单尾概率(在参数“sigma”给定的点)。看到了吗 Maxwell (2011) 更多详情。
6. 'kraft-burrows-nousek' 贝叶斯方法的存在允许这种背景 \(B\) 在源信号中 \(N\) . 对于给定的置信水平 \(CL\) 置信区间 \([S_\mathrm{{min}}, S_\mathrm{{max}}]\) 计算公式:
\[CL=\int^{S{mathrm{max}}}{S}\mathrm{min}}f{N,B}(S)dS\]函数在哪里 \(f_{{N,B}}\) 是:
\[f{N,B}(S)=C\frac{e^{-(S+B)}(S+B)^N}{N!}\]以及归一化常数 \(C\) :
\[C = \left[ \int_0^\infty \frac{e^{-(S+B)}(S+B)^N}{N!} dS \right] ^{-1} = \left( \sum^N_{n=0} \frac{e^{-B}B^n}{n!} \right)^{-1}\]见 Kraft, Burrows, and Nousek (1991) 更多详情。
这些公式实现了一个正的、一致的先验。 Kraft, Burrows, and Nousek (1991) 更详细地讨论这一选择,并表明问题对先验的选择相对不敏感。
此函数有一个可选的依赖项: Scipy 或 mpmath 需要可用(Scipy仅适用于N<100)。这段代码在数值上非常密集,这使得它比其他方法慢得多,特别是对于大计数(即使在1000以上)
mpmath
)。幸运的是,其他一些方法或高斯近似通常在这种制度下工作得很好。实例
>>> poisson_conf_interval(np.arange(10), interval='root-n').T array([[ 0. , 0. ], [ 0. , 2. ], [ 0.58578644, 3.41421356], [ 1.26794919, 4.73205081], [ 2. , 6. ], [ 2.76393202, 7.23606798], [ 3.55051026, 8.44948974], [ 4.35424869, 9.64575131], [ 5.17157288, 10.82842712], [ 6. , 12. ]])
>>> poisson_conf_interval(np.arange(10), interval='root-n-0').T array([[ 0. , 1. ], [ 0. , 2. ], [ 0.58578644, 3.41421356], [ 1.26794919, 4.73205081], [ 2. , 6. ], [ 2.76393202, 7.23606798], [ 3.55051026, 8.44948974], [ 4.35424869, 9.64575131], [ 5.17157288, 10.82842712], [ 6. , 12. ]])
>>> poisson_conf_interval(np.arange(10), interval='pearson').T array([[ 0. , 1. ], [ 0.38196601, 2.61803399], [ 1. , 4. ], [ 1.69722436, 5.30277564], [ 2.43844719, 6.56155281], [ 3.20871215, 7.79128785], [ 4. , 9. ], [ 4.8074176 , 10.1925824 ], [ 5.62771868, 11.37228132], [ 6.45861873, 12.54138127]])
>>> poisson_conf_interval( ... np.arange(10), interval='frequentist-confidence').T array([[ 0. , 1.84102165], [ 0.17275378, 3.29952656], [ 0.70818544, 4.63785962], [ 1.36729531, 5.91818583], [ 2.08566081, 7.16275317], [ 2.84030886, 8.38247265], [ 3.62006862, 9.58364155], [ 4.41852954, 10.77028072], [ 5.23161394, 11.94514152], [ 6.05653896, 13.11020414]])
>>> poisson_conf_interval( ... 7, interval='frequentist-confidence').T array([ 4.41852954, 10.77028072])
>>> poisson_conf_interval( ... 10, background=1.5, confidence_level=0.95, ... interval='kraft-burrows-nousek').T array([[ 3.47894005, 16.113329533]])