`logProbability` returns `NaN` for the Poisson distribution with `λ = 0`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Empieza por la implementación de Poisson de logProbability y su tratamiento existente de probability para una tasa de 0. Revisa las pruebas de las distribuciones de Poisson y añade cobertura para λ = 0 evaluado en 0. Se considera terminado cuando logProbability (poisson 0) 0 devuelve 0 y pasan las pruebas pertinentes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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!
- Lenguaje dominante
- Haskell
- Estrellas
- 309
- Forks
- 77
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de haskell/statistics
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
haskell/statistics#237 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
haskell/statistics#236 ·
-
Bug: LinearTransform shiftAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
haskell/statistics#234 ·
-
Test failure Pearson correlationAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
haskell/statistics#231 · 3 comentarios ·
-
test failure in "1 - CDF match"Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
haskell/statistics#215 ·
Todos los issues de haskell/statistics
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
pkg:crucible-mir type:bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Heroes in statisticsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
GaloisInc/llvm-pretty#211 ·