Estoy buscando una función en Numpy o Scipy (o cualquier biblioteca Python rigurosa) que me dé la función de distribución normal acumulativa en Python.
python
numpy
scipy
statistics
martineau
fuente
fuente

locyscale?help(norm.ppf)locscalePuede que sea demasiado tarde para responder la pregunta, pero dado que Google todavía lleva a la gente aquí, decido escribir mi solución aquí.
Es decir, desde Python 2.7, la
mathbiblioteca ha integrado la función de errormath.erf(x)La
erf()función se puede utilizar para calcular funciones estadísticas tradicionales como la distribución normal estándar acumulativa:Árbitro:
https://docs.python.org/2/library/math.html
https://docs.python.org/3/library/math.html
¿Cómo se relacionan la función de error y la función de distribución normal estándar?
fuente
def phi(x, mu, sigma): return (1 + erf((x - mu) / sigma / sqrt(2))) / 2.Adaptado de aquí http://mail.python.org/pipermail/python-list/2000-June/039873.html
fuente
Para construir sobre el ejemplo de Unknown, el equivalente en Python de la función normdist () implementada en muchas bibliotecas sería:
fuente
A partir
Python 3.8, la biblioteca estándar proporciona elNormalDistobjeto como parte delstatisticsmódulo.Se puede utilizar para obtener la función de distribución acumulativa (
cdf- probabilidad de que una muestra aleatoria X sea menor o igual ax) para una media (mu) y una desviación estándar (sigma) dadas :Que se puede simplificar para la distribución normal estándar (
mu = 0ysigma = 1):fuente
La respuesta de Alex le muestra una solución para la distribución normal estándar (media = 0, desviación estándar = 1). Si tiene una distribución normal con
meanystd(cuál essqr(var)) y desea calcular:Lea más sobre cdf aquí y la implementación scipy de distribución normal con muchas fórmulas aquí .
fuente
Tomado de arriba:
Para una prueba de dos colas:
fuente
Simple como esto:
Encontré la fórmula en esta página https://www.danielsoper.com/statcalc/formulas.aspx?id=55
fuente
Como Google da esta respuesta para la búsqueda netlogo pdf , aquí está la versión netlogo del código Python anterior
;; Función de densidad acumulativa de distribución normal para informar normcdf [x mu sigma] deja tx - mu sea y 0.5 * erfcc [- t / (sigma * sqrt 2.0)] si (y> 1.0) [establecer y 1.0] informe y final ;; Función de densidad de probabilidad de distribución normal para informar normpdf [x mu sigma] sea u = (x - mu) / abs sigma sea y = 1 / (sqrt [2 * pi] * abs sigma) * exp (- u * u / 2.0) informe y final ;; Función de error complementaria para informar erfcc [x] sea z abs x sea t 1.0 / (1.0 + 0.5 * z) sea rt * exp (- z * z -1.26551223 + t * (1.00002368 + t * (0.37409196 + t * (0.09678418 + t * (-0.18628806 + t * (.27886807 + t * (-1.13520398 + t * (1.48851587 + t * (-0.82215223 + t * .17087277))))))))) ifelse (x> = 0) [informe r] [informe 2.0 - r] finalfuente