Cálculo del percentil de distribución normal.

9

Ver esta página de Wikipedia:

http://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Agresti-Coull_Interval

Para obtener el intervalo Agresti-Coull, uno necesita calcular un percentil de la distribución normal, llamado . ¿Cómo calculo el percentil? ¿Existe una función preparada que haga esto en Wolfram Mathematica y / o Python / NumPy / SciPy?z

Ram Rachum
fuente
1
Desafortunadamente, la expresión integral en el "cdf normal que obtuve exactamente de Wiki" está desactivada por un factor de . No existe una fórmula exacta conocida para el cdf normal o su inverso usando un número finito de términos que involucran funciones estándar ( etc.), pero tanto el cdf normal como su inverso se han estudiado mucho y se aproximan. Las fórmulas para ambos se programan en muchas calculadoras, hojas de cálculo, sin mencionar los paquetes estadísticos. No estoy familiarizado con R, pero me sorprendería que no tuviera lo que está buscando incorporado. exp,log,sincos1/ /πExp,Iniciar sesión,pecadocos
Dilip Sarwate
@DilipSarwate, ¡está arreglado! Estoy haciendo esto usando la transformación inversa, también "no permitido" para usar demasiado incorporado. Es por el bien del aprendizaje, supongo.
user1061210
1
@Dilip: ¡No solo no existe una fórmula exacta conocida, mejor aún, se sabe que tal fórmula no puede existir!
cardenal
1
El método Box-Muller genera muestras a partir de una distribución conjunta de variables aleatorias normales estándar independientes. Entonces los histogramas de los valores generados se parecerán a las distribuciones normales estándar. Pero el método Box-Muller no es un método para calcular valores de excepto de manera incidental, como en "Genere muestras normales estándar de las cuales tiene el valor o menos, y entonces , y .10 4 8401 1 Φ ( 1 ) 0.8401 Φ - 1 ( 0.8401 ) 1Φ(X)104 484011Φ(1)0.8401Φ-1(0.8401)1
Dilip Sarwate
1
Acabo de elegir como ejemplo de los tipos de números que puede esperar. y, por lo tanto, si genera muestras de una distribución normal estándar, debe esperar que cerca de de las muestras tengan un valor . Está implementando el método Box-Muller correctamente, pero no comprende los resultados que está obteniendo y no los relaciona con el cdf, etc.Φ ( 1 ) = 0.8413 10 4 8413 10000 18401Φ(1)=0,8413...104 48413100001
Dilip Sarwate

Respuestas:

3

Para Mathematica $VersionNumber > 5 puedes usar

Quantile[NormalDistribution[μ, σ], 100 q]

para el qpercentil

De lo contrario, primero debe cargar el paquete de estadísticas adecuado.

JM no es un estadístico
fuente
(Tengo la versión 7.) No tengo problemas para cargar el paquete de estadísticas. ¿Pero cómo se llama la función allí? Porque tengo la impresión de que esta Quantilelínea hará el cálculo manualmente en lugar de usar una fórmula.
Ram Rachum
Evaluar con parámetros simbólicos (es decir, los valores de OD no asignar a mu, sigmay q); debe obtener una expresión que implique la función de error inverso.
JM no es un estadístico
16

La página de John Cook, Distribuciones en Scipy , es una buena referencia para este tipo de cosas:

In [15]: import scipy.stats

In [16]: scipy.stats.norm.ppf(0.975)
Out[16]: 1.959963984540054
ars
fuente
4

Bueno, no preguntaste por R, pero en R lo haces usando qnorm

(En realidad, es el cuantil, no el percentil, o eso creo)

> qnorm(.5)
[1] 0
> qnorm(.95)
[1] 1.644854
Tal Galili
fuente
1
Cuantil vs. percentil (es simplemente una cuestión de terminología), j.mp/dsYz9z .
chl
1
Mientras estamos en R, los IC ajustados de Wald (por ejemplo, Agresti-Coull) están disponibles en el PropCIspaquete. El método de Wilson es el predeterminado en Hmisc::binconf(como lo sugieren Agresti y Coull).
chl
2

En Python, puede usar el módulo de estadísticas del paquete scipy (busque cdf(), como en el siguiente ejemplo ).

(Parece que el paquete trascendental también incluye distribuciones acumulativas habituales).

chl
fuente
0

Puede utilizar la función inversa erf , que está disponible en MatLab y Mathematica, por ejemplo.

Para el CDF normal, comenzando desde

y=Φ(x)=12[1+erf(x2)]

Obtenemos

x=2 erf1(2y1)

Para el CDF log-normal, comenzando desde

y=Fx(x;μ,σ)=12erfc(logxμσ2)

Obtenemos

-Iniciar sesión(X)=μ+σ2 erfc-1(2y)
Jean-Victor Côté
fuente
2
¿No es esto más un comentario que una respuesta?
Macro
Mi idea era que si tienes inversas para las funciones erf y erfc, entonces el problema está resuelto. MatLab, por ejemplo, tiene tales funciones preprogramadas.
Jean-Victor Côté
@ Jean-VictorCôté Por favor, desarrolle sus ideas en su respuesta. De lo contrario, simplemente parece un comentario como se sugirió anteriormente.
chl
Iniciar sesión(X)X