私はmatplotlibを使って作っているヒストグラムにポアソンの連続エラーバーを入れようとしていますが、私はpoissonianと仮定して95%の信頼区間を与えられますデータ。理想的には、解はscipyに依存しないが、何かが効くだろう。そのような機能は存在しますか?私はブートストラップについて多くを見つけましたが、これは私の場合には少し過剰です。 scipy.stats.poisson
を使用ポアソン信頼区間とnumpy
答えて
、及び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])
をsome properties I found on 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
これは、私のフィールドでより標準的な連続的な(離散ではなく)境界を返します。
この問題は、天文学に多くを来て、この論文は、外出先-するために、これらの信頼区間のための参照である(私のフィールド!):Gehrels 1980
それが持つ任意の信頼区間のためにそれに数学をたくさん持っていますポアソン統計であるが、両面95%信頼区間(2シグマのガウス信頼区間、または本稿の文脈ではS = 2に相当する)に対して、N事象の場合の上限および下限信頼限界の簡単な解析式測定されます
upper = N + 2. * np.sqrt(N + 1) + 4./3.
lower = N * (1. - 1./(9. * N) - 2./(3. * np.sqrt(N))) ** 3.
ここで私はあなたのためにPythonの形式でそれらを入れているeady。あなたが必要とするのは、numpyか他のお気に入りの平方根モジュールだけです。 +/-値ではなく、イベントの上限と下限を指定することに注意してください。あなたはそれらを得るためにこれらの両方からNを差し引くだけです。
これらの公式の正確さについては、必要な信頼区間については論文を参照してください。しかし、これらの式は、ほとんどの実用的なアプリケーションに対して十分に正確である必要があります。
@firelynxの編集ありがとうございます。この方法ではるかに読みやすくなります。私はソフトウェアエンジニアリングよりも科学を行うので、私は頻繁にPEP8に従うことを忘れています。 –
- 1. 信頼区間
- 2. のブートストラップ信頼区間
- 3. 複数の信頼区間
- 4. ブートストラップの信頼区間R
- 5. Seaborn Boxplotの信頼区間
- 6. パイソン - StatsmodelsでStatsModels、OLS信頼区間
- 7. 信頼区間、点、線をプロットする
- 8. SQLの線形回帰信頼区間
- 9. xgboost回帰の信頼区間R
- 10. 95%信頼区間のボックスプロットR
- 11. R比率の信頼区間係数
- 12. プロファイルの信頼区間がR:mle2
- 13. pythonでの学生の信頼区間
- 14. リッジ回帰の信頼区間
- 15. 階層ブートストラップからの信頼区間
- 16. グラデーションの影付きの信頼区間
- 17. COCOMO IIモデルの信頼区間
- 18. 人口比率の信頼区間R
- 19. 多項式回帰の信頼区間
- 20. 私は一度計算信頼区間については、以下のR関数を読ん信頼区間
- 21. ブートストラップ信頼区間と最終推定値の "Inf" - boot/dplyrパッケージ
- 22. バープロットにt値と信頼区間を追加するR
- 23. qqプロットに信頼区間を追加するか?
- 24. サンプルデータからの信頼区間を計算する
- 25. リコールまたは精度の信頼区間/マージン
- 26. ggplot2で手作業で信頼区間を網掛けする
- 27. シミュレーションデータからのプロットに信頼区間を追加するR
- 28. ガウス過程(scikit学習)予測信頼区間倒錯変態
- 29. フリースカッパの信頼区間を計算する
- 30. R:cor.test関数から信頼区間を抽出する方法
正確な戻り値を取得する方法を知っていますか? – Shep
@Shepちょうどカイ2乗に基づいてメソッドのバージョンを追加しましたが、 'interval'を使用して私の答えにしました。 – Jaime