poisson_conf_interval#

astropy.stats.poisson_conf_interval(n, interval='root-n', sigma=1, background=0, confidence_level=None)[源代码]#

在给定观测计数的情况下,泊松参数可信区间。

参数:
n : intnumpy.ndarrayPYTHON: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”模式。

返回:
conf_interval : ndarray恩达雷

conf_interval[0]conf_interval[1] 分别对应于中每个元素的下限和上限 n .

笔记

泊松数据的“正确”可信区间是一个有争议的问题。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) 更详细地讨论这一选择,并表明问题对先验的选择相对不敏感。

此函数有一个可选的依赖项: Scipympmath 需要可用(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]])