`logProbability` returns `NaN` for the Poisson distribution with `λ = 0`
まだ誰も着手していません。
評価
調査の方向性
Poisson の logProbability 実装と、レート 0 に対する既存の probability の処理から始めます。Poisson 分布のテストを確認し、0 で評価した λ = 0 のケースを追加します。logProbability (poisson 0) 0 が 0 を返し、関連するテストが通れば完了です。
索引モデルが issue の本文から書いたものです。
説明
Hi!
Unfortunately, as said in the title: logProbability returns NaN for the Poisson distribution with rate 0, evaluated at 0. Here is a minimal example (save it as Main.hs and run runghc Main.hs with statistics-0.16.5.0 exposed):
import qualified Statistics.Distribution as D
import Statistics.Distribution.Poisson (poisson)
main :: IO ()
main = print (D.logProbability (poisson 0) 0)
Output (on GHC 9.6.7 and 9.14.1):
NaN
whereas it should be 0, since a Poisson distribution with rate 0 is a point mass at 0 (so the probability of 0 is 1, and its logarithm is 0). And rate 0 is inside the constructor's documented domain (λ >= 0).
The problem comes from the formula log λ * fromIntegral i - logFactorial i - λ used in logProbability. At λ = 0 and i = 0, its first term is (-Infinity) * 0, which is NaN. logProbability doesn't handle this case, which is a pity since probability does. For the same distribution, probability returns 1, so the two functions disagree. Would it be possible to fix this?
Thanks in advance!
- 主要言語
- Haskell
- スター
- 309
- フォーク
- 77
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
haskell/statistics のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
haskell/statistics#237 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
haskell/statistics#236 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 58/100
haskell/statistics#234 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
haskell/statistics#231 · コメント 3 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
haskell/statistics#215 ·
haskell/statistics の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
pkg:crucible-mir type:bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
Heroes in statisticsオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
GaloisInc/llvm-pretty#211 ·