私はmatplotlibで作成しているヒストグラムにポアソン連続エラーバーを配置しようとしていますが、ポアソンデータを想定して95%の信頼区間を与えるnumpy関数を見つけることができないようです. 理想的には、ソリューションは scipy に依存しませんが、何でも機能します。そのような機能は存在しますか?ブートストラップについて多くのことを見つけましたが、これは私の場合は少し過剰に思えます。
質問する
7256 次
3 に答える
11
Wikipedia で見つけたいくつかのプロパティに基づいて、独自の関数を作成することになりました。
def poisson_interval(k, alpha=0.05):
"""
uses chisquared info to get the poisson interval. Uses scipy.stats
(imports in function).
"""
from scipy.stats import chi2
a = alpha
low, high = (chi2.ppf(a/2, 2*k) / 2, chi2.ppf(1-a/2, 2*k + 2) / 2)
if k == 0:
low = 0.0
return low, high
これは、私の分野ではより標準的な(離散的ではなく)連続的な境界を返します。
于 2013-02-12T12:25:45.487 に答える
8
scipy.stats.poisson
、およびメソッドの使用interval
:
>>> scipy.stats.poisson.interval(0.95, [10, 20, 30])
(array([ 4., 12., 20.]), array([ 17., 29., 41.]))
非整数値のポアソン分布を計算することは限られた意味しかありませんが、OPによって要求される正確な信頼区間は、次のように計算できます。
>>> data = np.array([10, 20, 30])
>>> scipy.stats.poisson.interval(0.95, data)
(array([ 4., 12., 20.]), array([ 17., 29., 41.]))
>>> np.array(scipy.stats.chi2.interval(.95, 2 * data)) / 2 - 1
array([[ 3.7953887 , 11.21651959, 19.24087402],
[ 16.08480345, 28.67085357, 40.64883744]])
ppf
次の方法を使用することもできます。
>>> data = np.array([10, 20, 30])
>>> scipy.stats.poisson.ppf([0.025, 0.975], data[:, None])
array([[ 4., 17.],
[ 12., 29.],
[ 20., 41.]])
ただし、分布は離散的であるため、戻り値は整数になり、信頼区間は正確に95%に及ぶことはありません。
>>> scipy.stats.poisson.ppf([0.025, 0.975], 10)
array([ 4., 17.])
>>> scipy.stats.poisson.cdf([4, 17], 10)
array([ 0.02925269, 0.98572239])
于 2013-02-11T15:00:31.573 に答える